如何寫入某些已打開的控制檯的標準輸出? 我發現我需要這段代碼控制檯:獲取句柄並寫入啓動我們的過程的控制檯
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