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

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

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

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

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

我是Delphi新手,请大家最好有详细的代码例子!高分相送!谢谢!
...全文
92 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
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()
.....

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧