25-03-2017, Saat: 20:47
Konuyu Oyla:
Delphi ile cmd komut göndermek ve yanıt almak
|
25-03-2017, Saat: 22:58
26-03-2017, Saat: 02:44
@
overload olarak iki defa tanımlanmış paremetre olarak compile edilirken ne olduğu belirtilmeli. Aşağıdaki gibi düzeltirsen derleyecektir. AOutput := AOutput + StrPas(PAnsiChar(vBuffer));
Ayakkabıyı sefaletten
Çok sonraları tanıdım Öyle ufuklarda mı olurmuş Allah'ım Giyer giyer koşardım Toprağın dostluğundan Oyuncaklar yaptım çamurdan Tenimin rengini aldım topraktan Sen bakma esmerliğim sonradan...
26-03-2017, Saat: 14:39
Delphi xe 10 ile denedim. Belli komutlar çalıştırabildim. Örneğin diskpart gibi yönetici hakları isteyen komutları malesef çalıştıramayıp program kırıldı. Teşekkürler
26-03-2017, Saat: 14:43
26-03-2017, Saat: 22:59
Windoww 8 işletim sisteminde yönetici hakları ile belli başlı dos komutlarını denedim. ( Ver , Help gibi ) Program kilitleniyor.
28-03-2017, Saat: 17:17
(26-03-2017, Saat: 02:44)QuAdR Adlı Kullanıcıdan Alıntı: Aşağıdaki gibi düzeltirsen derleyecektir. Merhaba. Paylaşım için teşekkürler. Ben orjinal projeyi test etdim sorunsuz yukardakı düzeltmeden sonra çalıştı. Küçük bir projede kullanmak isteyince hata veriyor. unit uConsole; { Thanks: QuAdR http://www.delphican.com/uye-quadr.html } interface uses Windows, SysUtils, StrUtils; type TAnoPipe = record Input: THandle; Output: THandle; end; function FastCapture(const ACmdLine: string): string; implementation function ExecAndCapture(const ACmdLine: string; var AOutput: string): Integer; const cBufferSize = 2048; var vBuffer: Pointer; vStartupInfo: TStartUpInfo; vSecurityAttributes: TSecurityAttributes; vReadBytes: DWord; vProcessInfo: TProcessInformation; vStdInPipe : TAnoPipe; vStdOutPipe: TAnoPipe; begin Result := 0; with vSecurityAttributes do begin nlength := SizeOf(TSecurityAttributes); binherithandle := True; lpsecuritydescriptor := nil; end; if not CreatePipe(vStdInPipe.Output, vStdInPipe.Input, @vSecurityAttributes, 0) then raise Exception.Create('Pipe error: ' + SysErrorMessage(GetLastError)); try if not CreatePipe(vStdOutPipe.Output, vStdOutPipe.Input, @vSecurityAttributes, 0) then raise Exception.Create('Pipe error: ' + SysErrorMessage(GetLastError)); try GetMem(vBuffer, cBufferSize); try FillChar(vStartupInfo, Sizeof(TStartUpInfo), #0); vStartupInfo.cb := SizeOf(TStartUpInfo); vStartupInfo.wShowWindow:= SW_HIDE; vStartupInfo.hStdInput := vStdInPipe.Output; vStartupInfo.hStdOutput := vStdOutPipe.Input; vStartupInfo.dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW; if not CreateProcess(nil , PChar(ACmdLine) , @vSecurityAttributes , @vSecurityAttributes , True , NORMAL_PRIORITY_CLASS , nil , nil , vStartupInfo , vProcessInfo) then raise Exception.Create('Console error. System error msg: ' + SysErrorMessage(GetLastError)); try while WaitForSingleObject(vProcessInfo.hProcess, 50) = WAIT_TIMEOUT do Sleep(0); AOutput := ''; repeat ReadFile(vStdOutPipe.Output, vBuffer^, cBufferSize, vReadBytes, nil); if vReadBytes > 0 then begin //AOutput := AOutput + StrPas(vBuffer); // Delphi 7 AOutput := AOutput + StrPas(PAnsiChar(vBuffer)); Inc(Result, vReadBytes); end; until (vReadBytes < cBufferSize); finally CloseHandle(vProcessInfo.hProcess); CloseHandle(vProcessInfo.hThread); end; finally FreeMem(vBuffer); end; finally CloseHandle(vStdOutPipe.Input); CloseHandle(vStdOutPipe.Output); end; finally CloseHandle(vStdInPipe.Input); CloseHandle(vStdInPipe.Output); end; end; function FastCapture(const ACmdLine: string): string; var vOutput: string; begin ExecAndCapture(ACmdLine, vOutput); Result := Trim(AnsiReplaceStr(vOutput, #13#13#10, #13#10)); end; end.
Konuyu yeni gördüm biraz zaman geçmiş ilgilenen arkadaşlar kusura bakmasın.
Nesneden yanıt gelmeyince sürekli döngüye giriyor ki bu yüzden process yanıt vermiyor. Biraz değişiklik yaptım thread ekledim şimdi iyi çalışıyor.Aslında başlı başına thread içerisinde işletip sonlandırılan bir şeyler yapmak lazım. Konuya ekliyorum.
Ayakkabıyı sefaletten
Çok sonraları tanıdım Öyle ufuklarda mı olurmuş Allah'ım Giyer giyer koşardım Toprağın dostluğundan Oyuncaklar yaptım çamurdan Tenimin rengini aldım topraktan Sen bakma esmerliğim sonradan... (25-03-2017, Saat: 14:39)QuAdR Adlı Kullanıcıdan Alıntı: Güncel... Teşekkürler elinize sağlık. (16-09-2016, Saat: 17:27)yhackup Adlı Kullanıcıdan Alıntı: Merhaba, paylaşım için teşekkürler.
14-07-2021, Saat: 10:58
(16-09-2016, Saat: 17:27)yhackup Adlı Kullanıcıdan Alıntı: Merhaba, 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. |
« Önceki Konu | Sonraki Konu »
|
Konu ile Alakalı Benzer Konular | |||||
Konular | Yazar | Yorumlar | Okunma | Son Yorum | |
VB 2013-den Delphi kecid | deutsch1988 | 8 | 390 |
7 saat önce Son Yorum: deutsch1988 |
|
SQL' de Değişimde Toplam Almak | OZCANK | 5 | 251 |
11-05-2024, Saat: 11:30 Son Yorum: OZCANK |
|
Delphi virus gibi | deutsch1988 | 14 | 816 |
11-05-2024, Saat: 10:21 Son Yorum: engerex |
|
delphi 10.4 | deutsch1988 | 0 | 119 |
18-04-2024, Saat: 11:46 Son Yorum: deutsch1988 |
|
Donanım bilgilerini almak için geliştirilmiş güzel bir proje | burakb44 | 2 | 297 |
02-04-2024, Saat: 16:06 Son Yorum: burakb44 |
Konuyu Okuyanlar: 1 Ziyaretçi