我正在尝试使用 C# 重定向 Windows XP 上已运行进程的标准输出。我知道如果我自己生成进程,我可以做到这一点,但对于这个应用程序,我更喜欢一个“监听器”,我可以附加到另一个进程。
这在纯 .Net 中可能吗?如果不可能,在 Win32 中也可能吗?
Thanks
更新:我正在尝试监视多个进程,这些进程都是由“看门人”进程启动的,如果这些进程崩溃,该进程将重新启动这些进程。这使得我很难预先进行任何重定向。
这将是fairly在 Win32 中使用以下命令可以轻松做到这一点绕道图书馆 http://research.microsoft.com/en-us/projects/detours/。您将查看对 WriteFile 的所有调用,并检查它们是否将输出到标准输出。您可能还想查看控制台输出函数(例如 WriteConsoleOutput),但它们很少使用,因此您可能不需要费心在大多数程序中使用。
我不记得 detours 是否直接支持 .NET 语言的使用。如果没有,我想你仍然可以通过 P/Invoke 使用它,但我认为它一点也不漂亮......
编辑:周围有各种类似的(免费)库。例如,杰弗里·里克特 (Jeffrey Richter) 的书高级视窗用于包括应该适用于此目的的一个。快速一看就知道他现在Windows 通过 C/C++仍然包括“DLL 注入和 API 挂钩”部分。这可能包括相同的代码(及其更新版本),这对于此类工作来说应该足够了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)