前回は、File Package Appで作成したパッケージのリスタートマネージャーに関する動作確認をしました。この投稿を作成していて、すべての振る舞いを簡単に確認できるツールがあったらと思いました。そこでテストツールを作成しました。
Restart Manager Test Tool
一般アプリでリスタートマネージャーに関する動作をそのアプリでの挙動しか確認できません。リスタートマネージャーに関するいろいろな動作確認をしたくなり、テストツールを作成しました。
です。ダウンロードおよび機能詳細はこちらです。
zipファイルの中には二つのEXEファイルがあります。RestartManagerTest.exeは32ビットアプリで32ビットWindows および64ビットWindowsの両方で起動できます。RestartManagerTest64.exeは64ビットアプリで、64ビットWindowsのみで起動できます。
このツールを使うとWindows Vistaで導入されたリスタートマネージャーに関するAPIとWM_QUERYENDSESSIONメッセージの挙動をテストできます。
テストできるAPI
テストできるAPIは以下の通りです。
- アプリの再起動の登録(RegisterApplicationRestart)
- アプリの再起動の登録解除(UnregisterApplicationRestart)
- シャットダウンブロックの理由の登録(ShutdownBlockReasonCreate)
- シャットダウンブロックの理由の登録解除(ShutdownBlockReasonDestroy)
これらはメイン画面の左上の領域のボタンで試すことができます。
WM_QUERYENDSESSIONメッセージのテスト
WM_QUERYENDSESSIONメッセージを受信したときに試すことができる機能は以下の通りです。
- アプリの再起動の登録(RegisterApplicationRestart)
- アプリの再起動の登録解除(UnregisterApplicationRestart)
- シャットダウンブロックの理由の登録(ShutdownBlockReasonCreate)
- 一定時間の待機(20秒)
- 戻り値の設定(trueまたはfalse)
これらは、メイン画面の右上の領域のチェックボックスをチェックすることにより試すことができます。
RmLogoTest.exeで動作確認
RmLogoTest.exeはデスクトップアプリのリスタートマネージャーの対応状況をテストするツールで、Windows App Certification Kitの中にあります。Windows App Cerification KitはWindows SDKに含まれています。最新のWindows SDKは、Windows 10 SDKとなります。Windows 10 SDKをインストールすると、Windows App Cerification Kitは、
64ビットWindows: C:\Program Files (x86)\Windows Kits\10\App Certification Kit\ 32ビットWindows: C:\Program Files\Windows Kits\10\App Certification Kit\
にインストールされます。この中にRmLogoTest.exeがあります。
このRestart Manager Testツールを使ってRmLogoTest.exeの成功パターン・失敗パターンの確認ができます。
単純に終了できることの確認
画面の右上の領域(When receiving WM_QUERYENDSESSION)のすべてのチェックボックスのチェックを外します。
> RmLogoTest.exe ProcessId LOGO Validation PASSED. Successfully stopped process id ProcessId
問題なくアプリが終了します。単純終了なので、アプリは再起動はしません。
アプリが再起動できることの確認(メッセージハンドラーで登録)
画面の右上の領域(When receiving WM_QUERYENDSESSION)のCall RegisterApplicationRestart()
のチェックボックスのみ、チェックします。
> RmLogoTest.exe ProcessId LOGO Validation PASSED. Successfully stopped process id ProcessId Note: One or more applications or services were restarted
WM_QUERYENDSESSIONメッセージを受信したタイミングで再起動の登録をして、問題なくアプリが再起動します。
アプリが再起動できることの確認(事前に登録)
画面の右上の領域(When receiving WM_QUERYENDSESSION)のすべてのチェックボックスのチェックを外します。RmLogoTest.exeを実行する前に、左上の領域の[RegisterApplicationRestart()]ボタンをクリックして再起動を登録します。その後、RmLogoTest.exeを起動します。
> RmLogoTest.exe ProcessId LOGO Validation PASSED. Successfully stopped process id ProcessId Note: One or more applications or services were restarted
WM_QUERYENDSESSIONメッセージを受信したタイミングより前に再起動の登録をしておいても、問題なくアプリが再起動します。
シャットダウンを拒否できることの確認
画面の右上の領域(When receiving WM_QUERYENDSESSION)のReturn false
のチェックボックスのみ、チェックします。
> RmLogoTest.exe ProcessId LOGO Validation FAILED. Unable to shutdown registered process id ProcessId with error code 0000015f Debugging Information -- # of Proc/Svcs : 1 Reboot ReasonCode: 00000000 Session 1, Pid 6220, Type 1, Status 1 - RestartManagerTest ()
シャットダウンを拒否したので、ロゴテストとしてはFAILEDになりますが、期待通りの振る舞いです。
メッセージハンドラ内で処理に時間がかかるときのテスト
画面の右上の領域(When receiving WM_QUERYENDSESSION)のWait 20 sec.
のチェックボックスのみ、チェックします。
> RmLogoTest.exe ProcessId LOGO Validation FAILED. Unable to shutdown registered process id ProcessId with error code 0000015f Debugging Information -- # of Proc/Svcs : 1 Reboot ReasonCode: 00000000 Session 1, Pid 6220, Type 1, Status 1 - RestartManagerTest ()
メッセージハンドラ内で5秒以上時間をかけることになるので、ロゴテストとしてはFAILEDになりますが、期待通りの振る舞いです。
シャットダウンブロックの理由が表示されることの確認
RmLogoTest.exeでは、シャットダウンブロックの理由が正しく登録されていることを確認できません。そのため、実際にサインアウトまたはシャットダウンまたは再起動を実行して動作確認します。
拒否理由をメッセージハンドラ内で登録
画面の右上の領域(When receiving WM_QUERYENDSESSION)のCall ShutdownBlockReasonCreate()
とReturn false
のチェックボックスのみ、チェックします。
- [ShutdownBlockReasonCreate()]ボタンの下のエディットボックスに拒否理由の文章(例. シャットダウン拒否のテストをしています)を設定します。
- サインアウトまたはシャットダウンまたは再起動を実行します
WM_QUERYENDSESSIONメッセージを受信したタイミングでシャットダウン拒否の理由を登録がされます。その後、再起動画面に以下のように表示され、シャットダウン拒否の理由(シャットダウン拒否のテストをしています
)が表示されています。
拒否理由を事前に登録
画面の右上の領域(When receiving WM_QUERYENDSESSION)のReturn false
のチェックボックスのみ、チェックします。
- [ShutdownBlockReasonCreate()]ボタンの下のエディットボックスに拒否理由の文章(例. シャットダウン拒否のテストをしています)を設定します。
- [ShutdownBlockReasonCreate()]ボタンをクリックします。
- サインアウトまたはシャットダウンまたは再起動を実行します
WM_QUERYENDSESSIONメッセージを受信したタイミングではシャットダウン拒否の理由を登録しませんが、再起動画面に以下のように表示され、シャットダウン拒否の理由(シャットダウン拒否のテストをしています
)が表示されています。
このように、このRestart Manager Test Toolを使うと、Windows Vistaで導入されたリスタートマネージャーに関するテストができます。
次回は、このツールを使用してWindows 10の挙動を確認した結果について投稿します。
“デスクトップアプリのリスタートマネージャー5(テストツール)” への1件の返信