0

ウィンドウを作成するサードパーティ アプリケーション (ターゲット) があります。親を設定したり、スタイルを変更したりして、そのウィンドウを自分のアプリケーションに埋め込みます。

問題は、Spy++ が WM_DESTROY を 2 回受信したターゲットを示していることです (アプリを閉じた場合)。これにより、ターゲットがクラッシュすることがあります。メッセージキューにターゲットウィンドウに関連付けられた2つのWM_DESTROYが含まれている理由を理解したい(ところで、WM_NCDESTROYは1つだけ)。

そのために、DestroyWindow、PostMessage syscalls にブレークポイントを設定しましたが、これらの関数はメイン ターゲット ウィンドウに対して呼び出されないようです (最初の関数は子ウィンドウに対してのみ呼び出され、2 番目の関数は WM_DESTROY を除く別のメッセージで呼び出されます)。私は自分のプロセスとターゲット プロセスの両方のコンテキストでそれを行いました。

問題は、メッセージをスレッド メッセージ キューに入れる低レベル関数があるかどうかです。私はそこにブレークポイントを置き、追加の WM_DESTROY がそこに置かれた瞬間を捉えたいと思っています。PostThreadMessageInternal のようなもの...

前もって感謝します!

4

0 に答える 0