在Delphi中捕获控制台程序的输出计算机等级考试

文章作者 100test 发表时间 2010:01:01 09:36:00
来源 100Test.Com百考试题网


  本文实现了在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.

相关文章


EXE工程和OCX工程的转化计算机等级考试
如何取得系统中的桌面的路径计算机等级考试
轻松实现DBGrid的多表头计算机等级考试
关于读写注册表二进制数据的问题计算机等级考试
在Delphi中捕获控制台程序的输出计算机等级考试
利用剪贴板实现高速导出数据到Excel计算机等级考试
终于可以不用任何控件作出XP风格的程序了计算机等级考试
一个C 程序员的Delphi学习笔记计算机等级考试
计算机二级辅导:Delphi编程规范1.0.0.0计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛