窗口 – 管道输出(stdout)从运行进程Win32Api

我需要使用 windows api获取(或管道)已经运行的进程的输出.

基本上我的应用程序应该允许用户选择一个窗口来管道输入,所有输入将显示在控制台中.我也会考虑如何在stderr之后得到一个管道.

重要提示:我没有使用CreateProcess()或其他方式启动该过程.该进程已经在运行,我所有的都是进程的句柄(从GetwindowThreadProcessId()返回).

无论你想做什么,你都做错了.如果您正在与具有源代码的程序进行交互,请为IPC创建一个定义的界面:创建一个套接字,一个命名管道,Windows消息传递,共享内存段,COM服务器或您所喜欢的IPC机制.不要尝试将IPC移植到不想做IPC的程序上.

你无法控制该进程的stdout设置,而不是你的混乱.它是由父母的过程创造的,并交给孩子,从那里开始,它控制着孩子. You don’t go in and change the carpets in somebody else’s house.

甚至没有想到进入这个过程,试图关闭它的stdout,并创建一个新的stdout指向你的管道.这是灾难的秘诀,会导致古怪的行为和“不可能”的崩溃.

即使你能做你想做的事,what would happen if two programs did this

相关文章

Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...
Windows文件操作基础代码 Windows下对文件进行操作使用的一段...
Winpcap基础代码 使用Winpcap进行网络数据的截获和发送都需要...
使用vbs脚本进行批量编码转换 最近需要使用SourceInsight查看...