[高分!]如何在Delphi中捕获其他程序的标准输出?

sunbn 2002-05-18 01:33:38
我想编个Delphi的程序实现捕获使用控制台的java/javac/jar ..的程序的输出。

1。首先如何使用我的程序来控制其他程序的执行?

2。其次,如何获得其它程序的标准输出?比如说javac xx.java的成功信息或是出错信息,都在我的程序的文本框中显示出来。

3。最后,Delphi中注册表相关的操作如何写?

我是Delphi新手,请大家最好有详细的代码例子!高分相送!谢谢!
...全文
65 12 打赏 收藏 举报
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sunbn 2002-05-22
Thank you all, westfly xjspa lx_king 结帖了。
以后有问题再问大家。
  • 打赏
  • 举报
回复
westfly 2002-05-19
//下面一些变量没具体去声明,不过结合参数提示应该很容易得知类型
//保存stdout
hSaveStdout := GetStdHandle(STD_OUTPUT_HANDLE);
//创建一个匿名管道(将子进程的Output重定向到父进程的Input里)
CreatePipe(ParentInput, ChildOutput, @SecurityAttributes, SizeOf(SecurityAttributes));
//将标准输出替换为ChildOutput
SetStdHandle(STD_OUTPUT_HANDLE, ChildOutput);
//创建一个不可被继承的Input副本
hProcess := GetCurrentProcess;
DuplicateHandle(hProcess, ParentInput, FProcess, @DuplicateInput, 0, False, DUPLICATE_SAME_ACCESS);
//将原来的Input关闭
CloseHandle(ParentInput);
//创建一个子进程(例如masm.exe xxx),将其中的继承属性设为真
CreateProcess(...);
//恢复stdout
SetStdHandle(STD_OUTPUT_HANDLE, hSaveStdout);
CloseHandle(ChildOutput);
//从管道中(即ParentInput的副本)读取数据
ReadFile(DuplicateInput, Buffer, SizeOf(Buffer), TransSize, nil);
  • 打赏
  • 举报
回复
caoqizi 2002-05-19
关注!
  • 打赏
  • 举报
回复
sunbn 2002-05-19
我自己找了一个:
http://community.borland.com/article/0,1410,10387,00.html

谁有Delphi的例子呢??

谁来解释解释CreatePipe的用法!
  • 打赏
  • 举报
回复
lx_king 2002-05-18
CreatePipe
  • 打赏
  • 举报
回复
wisenowa 2002-05-18
关注westfly(西翔)
  • 打赏
  • 举报
回复
sunbn 2002-05-18
up
  • 打赏
  • 举报
回复
sunbn 2002-05-18
:westfly 能详细说说吗?
  • 打赏
  • 举报
回复
westfly 2002-05-18
创建一个命名管道来取代stdout试试。
  • 打赏
  • 举报
回复
sunbn 2002-05-18
接受xjspa的第三点
接受lx_king的第一点

另外我不想重定向到文本,这个我会。我要直接能够接收别的程序的输出信息!

另外上面三点问题有详细源码的给高分!!
  • 打赏
  • 举报
回复
lx_king 2002-05-18
1.winexec() shellexecute()
2。重定向到一个临时文本文件中 然后 打开文本文件 就可以了
3。楼上说的没错
  • 打赏
  • 举报
回复
xjspa 2002-05-18
1.引用别的程序的units
2.用messagebox(),使用的系统资源比较少
3.reg:Tregister
reg:=Tregister.create(self);
reg:=....
open key()
....
closekey()
.....
  • 打赏
  • 举报
回复
相关推荐
发帖
Delphi

5124

社区成员

Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
帖子事件
创建了帖子
2002-05-18 01:33
社区公告
暂无公告