External komutlarda sonucu bekleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
mystic
Üye
Mesajlar: 8
Kayıt: 14 May 2004 10:51

External komutlarda sonucu bekleme

Mesaj gönderen mystic »

Merhabalar,

Hazirlamaya calistigim bir programcikta dos satirinda net use komutu ile uzak bir bilgisayara baglaniyor ve baglanti sonucunda oradan bir dosya calistiriyor. Bu baglanti islemi network un durumuna gore 5-10 sn icinde gerceklesebilio. Bu nedenle diger komutu bu baglantiya gore calisirmam icin baglanti sonucunu alana kadar bekletmem gerekiyor. Sleep ile denedim her zaman 10 sn de baglanmiyor ya 15 sn de baglanacagi tutarsa... Bu durumda ikinci komut hata veriyor.

Yukarida aciklamaya calistigim islemi yada external calistirdigim islemlerin sonucuna gore ikinci satiri execute ettirebilmenin yolu nedir acaba...

Kod: Tümünü seç

WinExec('net use h: \\server\E',sw_hide);
WinExec('cmd -c h:\hede.com',sw_hide);
Yapmak istedigim yukaridaki gibi bir islem...
Our Brain is Our Weapon!
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

merhaba aklıma gelen basit yöntemlerden birisi belki işini çözmeye yardımcı olabilir mesela ,

Kod: Tümünü seç

WinExec('net use h: \\server\E>c:\sonuc.txt',sw_hide); 
şeklinde kullanarak oluşacak sonu.TXT sinin içeriğini parse ederek komutun gerçekleşip gerşçekleşmediğini anlayabilirsin.

Başarılar.
Volkan KAMADAN
www.polisoft.com.tr
mystic
Üye
Mesajlar: 8
Kayıt: 14 May 2004 10:51

Mesaj gönderen mystic »

Yine forum kurallari diyeceksiniz ama
viewtopic.php?t=101&highlight=telnet adresinde aradigim yanita benzer birsey buldum. Ama aramalarda yakalamam mumkun olmadi.

vkamadan ilgin icin tesekkurler...
Our Brain is Our Weapon!
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

Kod: Tümünü seç

function ExecWait(const Cmd: string): Integer;
var
  ProcessInfo: TProcessInformation;
  hProcess: THandle;
  ReturnCode: Integer;
  StartupInfo: TStartupInfo;

  procedure ChkBool(Value: Boolean; const Msg: string);
  begin
    if (Value = false) then
      raise exception.create(Msg);
  end;

begin
  FillChar(StartupInfo, SizeOf(StartupInfo), 0);

  ChkBool(CreateProcess(nil, PChar(Cmd), nil, nil, False,
    CREATE_DEFAULT_ERROR_MODE + NORMAL_PRIORITY_CLASS,
    nil, nil, StartupInfo, ProcessInfo),
    'Error during CreateProcess');
  hProcess := ProcessInfo.hProcess; // save the process handle
  //Close the thread handle as soon as it is no longer needed
  CloseHandle(ProcessInfo.hThread);
  ReturnCode := WaitForSingleObject(hProcess, INFINITE);
  ChkBool(dword(ReturnCode) <> WAIT_FAILED, 'Error in WaitForSingleObject');
  // The process terminated
  ChkBool(GetExitCodeProcess(hProcess, dword(Result)),
    'Error in GetExitCodeProcess');
  // Close the process handle as soon as it is no longer needed
  ChkBool(CloseHandle(hProcess), 'Error in process Close Handle');
end;
kullanımı ExecWait('c:\programin.exe')
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
gencyazilim
Üye
Mesajlar: 10
Kayıt: 22 Eki 2006 11:23
Konum: Ankara
İletişim:

Mesaj gönderen gencyazilim »

Düzenleme: Özür dilerim, yanlış ileti.

Anahtar Kelimeler:

Sıralı Program Çalıştırma, Sıralı Çalıştırma, Winexec sıralı, sırayla winexec, autorun, all in one.
"Türkçemiz Sevdamızdır!"

http://www.turkcesevdalilari.com
Cevapla