從DLL

2011-11-16 60 views
2

寫入控制檯我有一個程序的DLL,並希望能夠在命令行中運行該程序,和我的DLL,然後通過管道將輸出到另一個程序。我該怎麼做呢?從DLL

我現在可以打開一個新的調試控制檯打印到,但我希望能夠到管道輸出,這樣我可以運行像一條捷徑:

C:\Windows\System32\cmd.exe /K "C:\Program_Using_the_DLL.exe | C:\Program_to_Pipe_To.exe" 

這是一些類似的問題不同( IE:this one)中,我需要能夠管輸出,所以我需要它來對當前控制檯。

也許我可以使用GetStdHandle()不知何故,或者是有什麼方法使用AttachConsole(ATTACH_PARENT_PROCESS)的?任何幫助,將不勝感激!我對這個細節非常陌生。

(DLL是用C++)

+0

當你管一個程序到另一個程序的輸出,它是不會控制檯了,所以AttachConsole是不會幫助。你需要得到被用於由父程序輸出的文件句柄,並希望它是用C++ I/O兼容。 –

+0

我不明白爲什麼它只是不應該工作。你有什麼想要做的? – zdan

回答

1

嘗試使用功能GetStdHandle(STD_OUTPUT_HANDLE)獲得HANDLE到當前輸出文件。

+0

然後如何使用該文件HANDLE寫入? – user1028435

+0

啊我的愚蠢傷害!正確答案是(當然),請致電 SetStdHandle(STD_OUTPUT_HANDLE,currentConsole); 其中currentConsole是GetStdHandle(STD_OUTPUT_HANDLE)返回的內容。 – user1028435

+0

所以,總結一下:像往常一樣使用cout <<(whatever),但在你完成所有這些之前,只需調用SetStdHandle(STD_OUTPUT_HANDLE,GetStdHandle(STD_OUTPUT_HANDLE)。 – user1028435