52

Windows のシャットダウン時にアプリケーションに問題があります。アプリケーションが正常に終了せず、[タスクの終了] ウィンドウが表示されます。デバッガーを使用して何が起こっているかを確認するにはどうすればよいですか?

Windows シャットダウン メッセージをアプリケーションに送信して、Windows がシャットダウン中であると認識し、その動作を正確に確認する方法はありますか?

4

5 に答える 5

65

Microsoft の Windows 用ロゴ テスト ツールには、Restart Manager (rmtool.exe) という名前のツールがあり、プロセスにシャットダウン メッセージと再起動メッセージを送信するために使用できます。ロゴ テスト ツールは、次の場所からダウンロードできます。

http://download.microsoft.com/download/d/2/5/d2522ce4-a441-459d-8302-be8f3321823c/LogoToolsv1.0.msi

次に、プロセスのシャットダウンをシミュレートできます。

rmtool.exe -p [PID] -S

[PID] はプロセス ID です。Vista Logo Certification Test Cases ドキュメントによると、

リスタート マネージャーのシャットダウン メッセージは次のとおりです。

を。LPARAM = ENDSESSION_CLOSEAPP(0x1) の WM_QUERYENDSESSION: GUI アプリケーションは、再起動の準備をするために、すぐに応答 (TRUE) する必要があります。

b. LPARAM = ENDSESSION_CLOSEAPP(0x1) の WM_ENDSESSION: アプリケーションは 5 秒 (サービスの場合は 20 秒) 以内にシャットダウンする必要があります。

c. CTRL_SHUTDOWN_EVENT: コンソール アプリケーションはすぐにシャットダウンする必要があります。

于 2010-04-20T08:58:56.583 に答える
8

Windows がシャットダウンすると、すべてのアプリケーションに「WM_QueryEndSession」が送信されると思います。Windows のシャットダウンをシミュレートするには、このメッセージを使用して PostMessage をアプリケーションに送信し、何が起こるかを確認するだけの小さなアプリケーションを作成できます。Windows は、実際にアプリケーションを閉じるためにそれより多くのメッセージ (WM_CLOSE など) を送信する場合がありますが、アプリケーションが「WM_QueryEndSession」メッセージを受信するたびに、アプリケーションがその下から敷物を引き出そうとしていることを意味します。

于 2009-02-06T16:17:51.133 に答える
0

ユーザーがログオフまたはシャットダウンしたときに発生するSystemEvents.SessionEndingイベントを使用できます。ただし、一部のリソースは利用できることが保証されていないため、使用する際には注意してください。たとえば、ユーザーをクロックアウトするためにアプリケーションをシャットダウンするときにサーバーをヒットする必要がありましたが (タイムクロック アプリケーション)、このイベントが発生したときにネットワーク カードが既に無効になっている場合があります。クリーンアップを行っているだけなので、これはうまくいくはずです。

于 2009-02-06T16:30:15.443 に答える