Merhaba,
Şirketimde geliştirdiğimiz yazılımları server paylaşımlarından güncellemek yerine nas cihazlardan güncellemeye karar verdik. Normalde yazılımı kendi yazdığımız basit bir uygulama ile güncelliyorduk. Ancak server üzerindeki paylaşım açık olması gerekliydi. Artık açık paylaşım bırakmak istemiyoruz. Dolayısı ile güncelleme yazılımı çalışınca net use komutu ile nas cihaza login olup dosya kopyalama bitince bağlantıyı gene net use ile kapatmak istiyorum. Normalde bunu dos komutları ile yapabiliyorum. Ancak delphiden beceremedimç
Shellexecute ile epey denedim anca başarılı olamadım.
Varmıdır bir fikri olan?
Yazılım Güncelleme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: Yazılım Güncelleme
Merhaba,
Çalışmayan kodlarınızı paylaşmanız mümkün müdür?
ShellExecute() normalde bir fonksiyondur. Geriye bir kod çevirir. Sizin aldığınız sonuç kodları ne oldu? Hata var ise anlamını öğrenmek için aşağıdaki gibi bir kod kullanabilirsiniz.
Çalışmayan kodlarınızı paylaşmanız mümkün müdür?
ShellExecute() normalde bir fonksiyondur. Geriye bir kod çevirir. Sizin aldığınız sonuç kodları ne oldu? Hata var ise anlamını öğrenmek için aşağıdaki gibi bir kod kullanabilirsiniz.
Kod: Tümünü seç
uses
System.SysUtils,
ShellApi;
procedure TForm1.Button1Click(Sender: TObject);
var
Return: Integer;
begin
Return := ShellExecute(Self.Handle, 'open', 'notepadd.exe', nil, nil, SW_SHOW);
if Return <= 32 then
ShowMessage(SysErrorMessage(GetLastError));
end;
Re: Yazılım Güncelleme
Kod: Tümünü seç
ShellExecute(0, nil, 'cmd.exe', 'net use \\10.0.1.100 /user:deneme deneme /persistent:yes', PChar(TargetFolder), SW_HIDE);
Re: Yazılım Güncelleme
Bu eskiden kullandığımız bat dosyası.
Ben ise artık kendi yazılımızla bu işi yaptırmak istiyorum.
Kod: Tümünü seç
NET USE \\10.0.1.100 /user:deneme deneme /PERSISTENT:YES
COPY \\10.0.1.100\share\ARAC_TAKIP c:\ARACLAR\
NET USE /DELETE \\10.0.1.100\IPC$
Kod: Tümünü seç
procedure TfrmMain.CopyDirectory(SourceFolder, TargetFolder,NodeFolder: String);
var
SearchFile: TSearchRec;
UserName: String;
PassWord: String;
begin
ShellExecute(0, nil, 'cmd.exe', 'net use \\10.0.1.100 /user:deneme deneme /persistent:no', PChar(TargetFolder), SW_SHOWNORMAL);
if NodeFolder <> '' then
begin
SourceFolder := SourceFolder + '\' + NodeFolder;
TargetFolder := TargetFolder + '\' + NodeFolder;
end;
if FindFirst(SourceFolder + '\*.*' , faAnyFile, SearchFile) = 0 then
begin
repeat
try
if SearchFile.Attr = faDirectory then
begin
if (SearchFile.Name <> '.') and (SearchFile.Name <> '..') then
begin
CreateDir(TargetFolder + '\' + SearchFile.Name);
CopyDirectory(SourceFolder, TargetFolder , SearchFile.Name);
end;
end else if (SearchFile.Name <> ThumbsFileName) then
begin
try
CopyFile(SearchFile.Name, SourceFolder, SearchFile.Name, TargetFolder);
except
end;
end;
finally
ShellExecute(0, nil, 'cmd.exe', 'net use /DELETE \\10.0.1.100\IPC$', PChar(TargetFolder), SW_HIDE);
end;
until (FindNext(SearchFile) <> 0);
FindClose(SearchFile);
end;
end;
Re: Yazılım Güncelleme
ShellExecute ile eskiden kullandığınız bat dosyasını çalıştırabilirsiniz:
Kod: Tümünü seç
ShellExecute(Application.Handle, nil, PChar('bat dosyasının tam yolu'), nil, nil, SW_MAXIMIZE);
There's no place like 127.0.0.1