Konuyu Oyla:
  • Derecelendirme: 3/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Delphi ile cmd komut göndermek ve yanıt almak
#21
(14-07-2021, Saat: 10:58)pro_imaj Adlı Kullanıcıdan Alıntı:
(16-09-2016, Saat: 17:27)yhackup Adlı Kullanıcıdan Alıntı: Merhaba,

Nette rastladığım faydalı olabileceğini düşündüğüm bir fonksiyon...


function GetCommand(CommandLine: string): string;
var
  SA: TSecurityAttributes;
  SI: TStartupInfo;
  PI: TProcessInformation;
  StdOutPipeRead, StdOutPipeWrite: THandle;
  WasOK: Boolean;
  Buffer: array[0..255] of AnsiChar;
  BytesRead: Cardinal;
  WorkDir: string;
  Handle: Boolean;
begin
  Result := '';
  with SA do begin
    nLength := SizeOf(SA);
    bInheritHandle := True;
    lpSecurityDescriptor := nil;
  end;
  CreatePipe(StdOutPipeRead, StdOutPipeWrite, @SA, 0);
  try
    with SI do
    begin
      FillChar(SI, SizeOf(SI), 0);
      cb := SizeOf(SI);
      dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
      wShowWindow := SW_HIDE;
      hStdInput := GetStdHandle(STD_INPUT_HANDLE);
      hStdOutput := StdOutPipeWrite;
      hStdError := StdOutPipeWrite;
    end;
    WorkDir := GetCurrentDir;
    Handle := CreateProcess(nil, PChar('cmd.exe /C ' + CommandLine),
                            nil, nil, True, 0, nil,
                            PChar(WorkDir), SI, PI);
    CloseHandle(StdOutPipeWrite);
    if Handle then
      try
        repeat
          WasOK := ReadFile(StdOutPipeRead, Buffer, 255, BytesRead, nil);
          if BytesRead > 0 then
          begin
            Buffer[BytesRead] := #0;
            Result := Result + Buffer;
          end;
        until not WasOK or (BytesRead = 0);
        WaitForSingleObject(PI.hProcess, INFINITE);
      finally
        CloseHandle(PI.hThread);
        CloseHandle(PI.hProcess);
      end;
  finally
    CloseHandle(StdOutPipeRead);
  end;
end;


Merhaba,

CMD ile Linux SSH ile bağlanmaya çalışırken Normal CMD ekranında parola sorusu geliyor ve yazıp işleme devam edebiliyoruz, Yukarıdaki komutlarla işlem yaptığımızda Parola ekranı dönmediği için devam edemiyorum bunu deneyimleyen var mı acaba. 

Teşekkürler.

comutunun başına,aşağıdaki gibi direktif kullanabilirsiniz tam hatırlamıyorum internetten araştırabilirsiniz.
net use xxxx /user:xxx
WWW
Cevapla
#22
(14-07-2021, Saat: 11:34)yhackup Adlı Kullanıcıdan Alıntı:
(14-07-2021, Saat: 10:58)pro_imaj Adlı Kullanıcıdan Alıntı: Merhaba,

CMD ile Linux SSH ile bağlanmaya çalışırken Normal CMD ekranında parola sorusu geliyor ve yazıp işleme devam edebiliyoruz, Yukarıdaki komutlarla işlem yaptığımızda Parola ekranı dönmediği için devam edemiyorum bunu deneyimleyen var mı acaba. 

Teşekkürler.

comutunun başına,aşağıdaki gibi direktif kullanabilirsiniz tam hatırlamıyorum internetten araştırabilirsiniz.
net use xxxx  /user:xxx

Bunu komutla değilde linux'un özelliği ile çözdüm.

Şimdide şöyle bir sorun oluyor, gönderdiğim komutun sonucu 30-40 sn sonra döndüğü için cmd'de alabiliyorum fakat bu fonksiyon o sonucu beklemeden cevap döndüğü için boş dönüyor.

(14-07-2021, Saat: 14:57)pro_imaj Adlı Kullanıcıdan Alıntı:
(14-07-2021, Saat: 11:34)yhackup Adlı Kullanıcıdan Alıntı: comutunun başına,aşağıdaki gibi direktif kullanabilirsiniz tam hatırlamıyorum internetten araştırabilirsiniz.
net use xxxx  /user:xxx

Bunu komutla değilde linux'un özelliği ile çözdüm.

Şimdide şöyle bir sorun oluyor, gönderdiğim komutun sonucu 30-40 sn sonra döndüğü için cmd'de alabiliyorum fakat bu fonksiyon o sonucu beklemeden cevap döndüğü için boş dönüyor.

*CMD yaptığım gibi Delphi tarafında aynı anda 2,3 komutu birlikte gönderiyorum.
Cevapla
#23
Merhaba,

Bunu yapamıyorum bir önerisi olan varmı acaba.

Tek tek komut gönderdiğimde sorunsuz çalışıyorken 3-4 satırlık komut gönderdiğinde dönüş değerini alamıyorum 3-4 satırlık komutu aynı anda gönderme zorunluluğum var.

*Aynı komutları cmd'ye yapıştırdığı da sonucun geldiğini gözlemliyorum.

Teşekkürler.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  CMD ile Linux'a Komut Gönderip Cevap Alma Hk. pro_imaj 3 82 5 saat önce
Son Yorum: eroniko
  Firebird Server Makinadaki Veri Tabanlarının Listesini Almak MEDCEZİR 5 333 28-06-2021, Saat: 12:19
Son Yorum: esistem
  Delphi Formlar Arası Nesne Taşıma software444 2 299 26-06-2021, Saat: 15:26
Son Yorum: mcuyan
  Delphi Tarafında Hash Üretme COMMANDX 2 1.422 25-06-2021, Saat: 15:52
Son Yorum: COMMANDX
  Delphi başlangıç minekirenli 5 517 23-06-2021, Saat: 17:03
Son Yorum: minekirenli



Konuyu Okuyanlar: 1 Ziyaretçi