0

そこで、通常のコンソールプログラムを起動して、その中に別のプロセスを作成します。次に、子プロセスは、親プロセスが所有するコンソールに何かを書き込もうとします。

このコンソールにフックを設定して、子プロセスがテキストを書き込もうとしたときに、このテキストを検索して置換し、変更してコンソールに配置することは可能ですか。

(パイプで可能であることはわかっていますが、コンソールではなくパイプに接続されていることを確認すると動作が異なるプログラムがあるため、ここでは特にコンソールレベルで実行するようにお願いします。)

SetWindowsHookEx私の質問と何か関係がありますか?

4

2 に答える 2

3

混乱を避けるために、Windowsメッセージはこれに関係していないため、フックは完全に間違った概念です。

STDOUTに書き込まれる子プロセスデータを変更する場合は、作成時にプロセスに渡す独自のパイプを作成する必要があります。これにより、そこからデータを読み取り、必要に応じて変更してから、自分でSTDOUTに印刷することができます。コンソールに直接書き込まれたデータを傍受する方法はありません。

于 2012-06-25T13:04:12.913 に答える
1

では、コンソールにwinprocフックをインストールしますか?もちろん、それは可能です。まず、コンソールウィンドウのHWND(ここを読んでください)を取得してから、SetWindowsHookEx()を呼び出してフックする必要があります。フックプロシージャで、defwinprocを呼び出すと、コンソールの元のwinprocが呼び出されることに注意してください。したがって、コンソールの動作全体を変更したくない場合は、明確に実行してください。

于 2012-06-23T18:32:18.280 に答える