Membuat Tool Command Windows dengan DELPHI RX

delphi-10-1-berlin

Sekali-kali share dan mendocumentasikan tentang pembelajaran pemrograman, kali ini saya coba membuat sebuah tool bantu yaitu tool command windows yang nanti bisa di kembangkan lebih lanjut. ok kita langsung saja untuk coba membuatnya.

Kali ini saya menggunakan Delphi RX 10.1 [Berlin] sebagai compilernya.

1. Buat project baru melalui file New -> vcl Form Aplication Delphi

01

2. Berikan Komponen TButton, TEdit dan TMemo, kemudian design seperti pada gambar berikut :

02

3. Pada Event OnCreate Form-1 berikan code sebagai berikut :

procedure TForm1.FormCreate(Sender: TObject);
begin
     Button1.Caption := 'Run';
     Edit1.Text        := '';
     Memo1.Text        := '';
     Form1.Caption     := 'Windows Command RX';
end;

4. kemudian tambahkan fungsi sebagai berikut :

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;

5. Pada button-1 pada even onclick isikan dengan code berikut :

procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Text := GetDosOutput(Edit1.Text);
end;

6. jalankan program dan coba isikan pada kotak edit sesuai command pada windows, maka hasilnya sebagai bserikut.

06

kita dapat mengembangkan sistem ini lebih lanjut untuk keperluan tool bantu yang sudah ada, semoga bermanfaat.

S E L A M A T      M E N C O B A

Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s