0

AttachConsoleおよび kernel32関数を呼び出してGetStdHandle、別のコンソールプロセスのコンソール画面バッファーにアクセスできることはわかっていますが、このプロセスの入力/出力/エラーがファイルまたはデバイスにリダイレクトされている場合、代わりにそれらのリダイレクトされた場所へのハンドルを取得するにはどうすればよいですか?

明確に言うと、接続しようとしているアプリケーションを制御できません。これはサードパーティによって提供されているため、IPCを使用する可能性はほとんどありません。

4

2 に答える 2

2

GetStdHandleリダイレクトを受け入れ、リダイレクトされたハンドルを返します。

プロセスの標準ハンドルは、 への呼び出しによってリダイレクトされる SetStdHandle場合があります。この場合GetStdHandle 、リダイレクトされたハンドルが返されます

このリンクには、オリジナルのリクエスト方法も記載されています。

于 2012-09-03T16:56:17.430 に答える
0

を使用CreateRemoteThreadして、コードを他のプロセスに挿入し、GetStdHandleそこから呼び出すことができます。DuplicateHandle次に、独自のプロセスでハンドルのコピーを作成するために使用する必要があります。

そのハンドルで行うことはすべて、ターゲット プロセスのハンドルに影響し、予期しない問題が発生する可能性があることに注意してください。たとえば、両方のプロセスが標準入力ストリームから読み取ろうとすると、どちらが入力のどの部分を参照するかを予測できず、両方のプロセスが標準出力ストリームに書き込むと、出力がランダムにオーバーラップする可能性があります。または 1 つの出力セットが他の出力セットを上書きする可能性があります。

于 2012-09-03T20:25:30.667 に答える