TL;DR - Spy++ ツールは実際にプロセス リストをどのように構築するのですか?
ステージ
MFC デスクトップ アプリケーション (Windows XP で実行) がハングしており、ユーザー入力に反応しなくなりました。ただし、alt-tab で切り替えると再描画されます。( 、 などは受信WM_SETFOCUS
しWM_ACTIVATE
ます。マウスやキーボードのメッセージは受信しないようです。)
アプリがどこかでハングアップしているため、いくつかのプロセス ダンプを取得しましたが、これまでのところほとんど役に立ちませんでした。入る:
スパイ++
Spy++ を使用して、このアプリケーションが処理していると思われるウィンドウ メッセージに関する上記の情報を見つけました。これを行うには、 Windows ビュー を開き、アプリケーション Window を選択し、Messages プロパティで選択した : を選択
Windows of same process
しMessages to View
ますSelect All
。
ただし、最初に Spy++のProcesses View を開いてこのプロセスのすべてのメッセージを表示しようとしたところ、このプロセス リストにアプリケーションが表示されませんでした。アプリが正常に動作している別のPCでクロスチェックすると、Spy++のプロセスリストにもプロセスが正常に表示されます。
プロセスが Spy++ の Process Viewに表示されていないが、アプリのメイン ウィンドウが Windows ビューに表示されているという事実から、不正な動作をしているアプリについて何かを推測できますか。メイン ウィンドウが表示されているプロセスが、Spy++ のプロセス ビューに表示されないのはなぜですか?
プロセスは、タスク マネージャーと Visual Studio 2005 の [プロセスのアタッチ] ウィンドウに表示されます。
アプリが現在ハングしているシステムは Windows XP SP2 システムであり、Visual Studio 2005 に付属の Spy++ ユーティリティを使用しました。
この動作は時折繰り返されますが、アプリが数日間実行された後にのみ発生します!