2012-06-23 86 views
0

所以我開始一個普通的控制檯程序,然後在其中創建另一個進程。接下來,子進程嘗試在父進程擁有的控制檯上寫入內容。可以通過子進程發送一個鉤子捕獲發送給控制檯的消息嗎?

是否有可能在這個控制檯上掛鉤,這樣當子進程嘗試寫入一些文本時,我可以搜索並替換此文本並將其更改到控制檯上。

(我知道這是可能的管道,但在這裏我特別要求在控制檯上水平做這件事的,因爲一些程序的行爲不同,如果他們看到它們連接到管道,而不是控制檯)。

SetWindowsHookEx與我的問題有關嗎?

回答

3

只是爲了避免混淆,windows消息並沒有涉及這個掛鉤是完全錯誤的概念。

如果您想要更改寫入STDOUT的子進程數據,則需要創建自己的管道,並在創建過程時將其傳遞給進程。這使您可以從中讀取數據,根據需要進行更改,然後自行打印到標準輸出。無法截取直接寫入控制檯的數據。

1

所以你想在控制檯上安裝winproc鉤子?當然,你可以這樣做,首先你必須得到控制檯窗口的HWND(讀取here),然後你可以調用你的SetWindowsHookEx()並掛鉤它。請注意,在你的鉤子程序中,調用defwinproc會調用控制檯的原始winproc,所以如果你不想修改控制檯的整個行爲,你就清楚了。

相關問題