程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi中捕獲控制台程序的輸出

Delphi中捕獲控制台程序的輸出

編輯:Delphi
本文實現了在Delphi中運行控制台程序,並將控制台程序的輸出在Memo控件中顯示出來。
  工作中需要手工編譯J2ME的程序,開始編寫了一個批處理程序,但是感覺使用中非常繁瑣,於是想用Delphi做一個集成編譯工具,但是Java的編譯工具都是console程序,怎麼捕獲到console程序的輸出,並顯示在Memo中呢,查了網上的一些資料,反復測試,找到了一個實現的方法,希望對大家有幫助:
  procedure TMainForm.RunDosInMemo(const DOSApp: string; AMemo: TMemo);
  const
  {設置ReadBuffer的大小}
  ReadBuffer = 2400;
  var
  Security: TSecurityAttributes;
  ReadPipe, WritePipe: THandle;
  start: TStartUpInfo;
  ProcessInfo: TProcessInformation;
  Buffer: PChar;
  BytesRead: DWord;
  Buf: string;
  begin
  with Security do
  begin
  nlength := SizeOf(TSecurityAttributes);
  binherithandle := true;
  lpsecuritydescriptor := nil;
  end;
  {創建一個命名管道用來捕獲console程序的輸出}
  if Createpipe(ReadPipe, WritePipe, @Security, 0) then
  begin
  Buffer := AllocMem(ReadBuffer + 1);
  FillChar(Start, Sizeof(Start), #0)
  {設置console程序的啟動屬性}
  with start do
  begin
  cb := SizeOf(start);
  start.lpReserved := nil;
  lpDesktop := nil;
  lpTitle := nil;
  dwX := 0;
  dwY := 0;
  dwXSize := 0;
  dwYSize := 0;
  dwXCountChars := 0;
  dwYCountChars := 0;
  dwFillAttribute := 0;
  cbReserved2 := 0;
  lpReserved2 := nil;
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved