如何写入某些已打开的控制台的标准输出? 我发现我需要这段代码控制台:获取句柄并写入启动我们的过程的控制台
IntPtr ptr = GetForegroundWindow();
int u;
GetWindowThreadProcessId(ptr, out u);
Process process = Process.GetProcessById(u);
的问题是如何得到这个进程的标准输出句柄指针(stdHandle)。
然后,我会想是这样的:用C
SafeFileHandle safeFileHandle = new SafeFileHandle(stdHandle, true);
FileStream fileStream = new FileStream(safeFileHandle, FileAccess.Write);
Encoding encoding = Encoding.ASCII;
StreamWriter standardOutput = new StreamWriter(fileStream, encoding);
standardOutput.AutoFlush = true;
Console.SetOut(standardOutput);
++编写代码使用Windows API是好的 - 我可以使用的PInvoke。
实际上,我希望将文本写入未由我的进程产生的已打开的控制台窗口(并且它是通过命令行启动我的进程时处于前台的文本 - 但我的进程是WinApp,所以控制台不附加std)。
过程创建后,标准输出是否可以重定向?
PS:我读,可以用来做一些这方面的COM文件,因此这意味着有一种编程方法,...
谢谢!
我明白手柄是微妙的,但我不会增加处理坏的东西的裁判计数。当所有者进程处理这个句柄时,我的代码就会失败......我期望的东西。有没有办法写入一个过程的标准输出(在Windows上,因为在Linux上你可以)? – 2011-04-19 05:19:35
你知道我们可以在Linux上,但我认为现在需要进行一些COM研究,我相信通过COM可以做到这一点。如果我发现相关的事情,会通知你。与此同时,这个问题和主题都对我有意思。 – Abhi 2011-04-19 06:27:45
亚当我发布了我的答案,它适用于我的需求。 – 2011-04-19 19:25:24