Eksekusi perintah DOS di Delphi, tips yang sudah lama saya cari-cari dan akhirnya ketemu juga. Thank’s untuk delphidabbler.com. Nah, sebagai rasa syukur saya, maka saya ingin berbagi tips tersebut kepada anda.
Pertama-tama, buat sebuah form dan tambahkan komponen Button, Edit dan Memo masing-masing satu. Jadi ceritanya kita memasukkan perintah DOS kedalam Editbox, kemudian tombol diklik, dan output dari perintah tersebut ditampilkan di Memo.Untuk itu kita perlu menambahkan fungsi berikut kedalam program:
function GetDosOutput(CommandLine: string; Work: string = 'C:\'): 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); // don't redirect stdin hStdOutput := StdOutPipeWrite; hStdError := StdOutPipeWrite; end; WorkDir := Work; 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;
Kemudian tambahkan kode berikut pada event onclick Button1:
Memo1.Text:=GetDosOutput(Edit1.Text);
Untuk mengetesnya coba ketikkan perintah “help cd”. Jika sudah benar, hasilnya akan seperti gambar dibawah ini:

Source code yang sudah jadi bisa di download disini

Link nya sudah saya pasang sob, tutorial nya sangat menarik, thank’s ya atas link nya
December 3rd, 2010, 02:29
Mas, ini di Windows 7 jalan ga?
December 3rd, 2010, 02:46
keren mas
Really helped ..
thanks loh …
December 4th, 2010, 17:37
Iya mas, bisa jalan di Windows 7
December 6th, 2010, 12:26
Mantabb mas… sudah dicoba hasilnya ‘jrenkkkk’ he he he
sangat membantu function nya…
tks…
December 8th, 2011, 08:00
Mas pya kumpulan scrip penting , misal : execute, messageshow,dll tlng bantu..??
December 12th, 2011, 00:00
aan: kalo kumpulannya sih ga ada mas, nemunya satu2. biasanya nanti ada skrip yg dibutuhin baru di tanya sama om gogel. banyak kok.
December 16th, 2011, 05:45
mantap nih post nya.
sy punya masalah baru mas, similar dng ini, gimana kalo sy jalanin java via perintah dos, dan keluarannya berupa file txt.
bagaiman cara menunggu proses java ini selesai dahulu, baru kemudian menampilkan output hasil file txt hke memo ?
dimana untuk mengesekusi java sy menggunakan ShellExecute.
terima kasih sebelumnya.
March 10th, 2012, 07:10
tomo: makasih sbelumnya mas. kayaknya pake script hasil modifnya mas joko bisa nih. http://jokorb.wordpress.com/2011/01/01/execute-dos-command-capture-the-output/
March 11th, 2012, 19:00