Windows 10 1709で、サインアウト(ログオフ)のデフォルトの挙動が変更されました。アプリは常にリスタートマネージャーによる再起動の対象となります。この仕様変更でアプリはどのような影響を受けるのでしょうか?
デスクトップアプリのリスタートマネージャー5(テストツール)
前回は、File Package Appで作成したパッケージのリスタートマネージャーに関する動作確認をしました。この投稿を作成していて、すべての振る舞いを簡単に確認できるツールがあったらと思いました。そこでテストツールを作成しました。
Restart Manager Test 1.0.4
Restart Manager Test Tool 1.0.4 のダウンロードページです。
上記の”Verify CAPTCHA to Download”内の”DOWNLOAD”リンクからダウンロードできます。もし、”Verify CAPTCHA to Download”内に、”私はロボットではありません”と表示されている場合は、チェックを入れて、指示のある画像を選択してください。画像を正しく選択するとダウンロードできます。
このバージョンについて
このツールの2回目のリリースです。このバージョンでは、以下の機能を実装しました。
- 関連情報の表示
- プロセスIDを表示
- ログファイル名の表示
- ウィンドウのリサイズの最小サイズの調整
リスタートマネージャーに関する動作の確認ができます。
機能の説明
メイン画面 – 左上側
この領域のボタンは、Restart Manager関連のAPIを個別に呼び出してテストできます。
RegisterApplicationRestart()
Windows Vistaで導入されたRegisterApplicationRestart()
を呼び出し、アプリ(ツール自身)の再起動の登録をします。
RegisterApplicationRestart(L"/restart ", RESTART_NO_CRASH | RESTART_NO_HANG);
上記の引数で呼び出します。Windows XP上で実行された場合は何もしません。
UnregisterApplicationRestart()
Windows Vistaで導入されたUnegisterApplicationRestart()
を呼び出し、アプリ(ツール自身)の再起動の登録を解除します。
UnregisterApplicationRestart();
このAPIは引数がないため、単純に呼び出すのみです。Windows XP上で実行された場合は何もしません。
ShutdownBlockReasonCreate()
Windows Vistaで導入されたShutdownBlockReasonCreate()
を呼び出し、シャットダウンをブロックする理由を登録をします。
RegisterApplicationRestart(hDialogWnd, pszReasonW);
上記の引数で呼び出します。hDialogWnd
はこのツールのメインウィンドウのウィンドウハンドルが設定されます。pszReasonW
は、ボタンの下のエディットボックスに設定された文字列が設定されます。Windows XP上で実行された場合は何もしません。
ShutdownBlockReasonDestroy()
Windows Vistaで導入されたShutdownBlockReasonDestroy()
を呼び出し、シャットダウンをブロックする理由の登録を解除します。
RegisterApplicationRestart(hDialogWnd);
上記の引数で呼び出します。hDialogWnd
はこのツールのメインウィンドウのウィンドウハンドルが設定されます。Windows XP上で実行された場合は何もしません。
メイン画面 – 右上側
この領域のチェックボックスは、このツールのメイン画面(ダイアログ)がWM_QUERYENDSESSIONメッセージを受信したときに行う動作を設定できます。複数のチェックボックスをチェックした場合は、WM_QUERYENDSESSIONメッセージのメッセージハンドラ内では、上から順番に処理されます。
Call RegisterApplicationRestart()
Windows Vistaで導入されたRegisterApplicationRestart()
を呼び出し、アプリ(ツール自身)の再起動の登録をします。
RegisterApplicationRestart(L"/restart ", RESTART_NO_CRASH | RESTART_NO_HANG);
上記の引数で呼び出します。Windows XP上で実行された場合は何もしません。
Call UnregisterApplicationRestart()
Windows Vistaで導入されたUnegisterApplicationRestart()
を呼び出し、アプリ(ツール自身)の再起動の登録を解除します。
UnregisterApplicationRestart();
このAPIは引数がないため、単純に呼び出すのみです。Windows XP上で実行された場合は何もしません。
Call ShutdownBlockReasonCreate()
Windows Vistaで導入されたShutdownBlockReasonCreate()
を呼び出し、シャットダウンをブロックする理由を登録をします。
RegisterApplicationRestart(hDialogWnd, pszReasonW);
上記の引数で呼び出します。hDialogWnd
はこのツールのメインウィンドウのウィンドウハンドルが設定されます。pszReasonW
は、左側の領域のエディットボックスに設定された文字列が設定されます。Windows XP上で実行された場合は何もしません。
Wait 20 sec.
メッセージハンドラ内で20秒間待機します。Windows Vista以降では、アプリはWM_QUERYENDSESSIONメッセージに5秒以内に応答しなければいけないので、そのテストができます。具体的には、チェックをした場合にSleep()
を呼び出します。
Sleep(20000);
上記の引数で呼び出します。
Return false
WM_QUERYENDSESSIONメッセージハンドラーの戻り値を決定します。チェックされていない場合は、trueを戻り値とします。チェックがされていた場合は、falseを戻り値とします。trueはアプリが終了できる状態であることを表します。falseはアプリがシャットダウンを拒否したことに相当します。
メイン画面 – 下側
Result
右側のエディットボックスは最後に実行したAPIのエラーコードが設定されます。下側の複数行のエディットボックスは、各APIを呼び出した結果や、リスタートマネージャーに関するウィンドウメッセージを受信したタイミングの記録が表示されます。
Ceate message log file
チェックしておくと、各APIを呼び出した結果や、リスタートマネージャーに関するウィンドウメッセージを受信したタイミングの記録をファイルに出力します。基本的に画面内に表示されている履歴と同じものをファイルに出力します。出力ファイルは、EXEファイルと同じフォルダーに作成されます。ファイル名はEXEファイル名に拡張子”.log”を追加した名前です。
Log Filename
ここに表示される名前はExeファイルと同じフォルダーに作成するログファイルの名前です。
Process ID
このツールのプロセスIDです。RmLogoTest.exeでテストするときに容易にプロセスIDを確認できるようにツールのプロセスIDを表示しています。
このアプリのトップページに戻る
Restart Manager Test 1.0.3
より新しいバージョンが公開されたのでこのページからはダウンロードしないでください。このページを参照してください。
Restart Manager Test Tool 1.0.3 のダウンロードページです。
上記の”Verify CAPTCHA to Download”内の”DOWNLOAD”リンクからダウンロードできます。もし、”Verify CAPTCHA to Download”内に、”私はロボットではありません”と表示されている場合は、チェックを入れて、指示のある画像を選択してください。画像を正しく選択するとダウンロードできます。
このバージョンについて
このツールの1回目のリリースです。このバージョンでは、以下の機能を実装しました。
- リスタートマネージャーAPIのテスト機能
- リスタートマネージャーにアプリの再起動の登録 (RegisterApplicationRestart)
- リスタートマネージャーにアプリの再起動の登録解除 (UnregisterApplicationRestart)
- シャットダウンブロックの理由の登録 (ShutdownBlockReasonCreate)
- シャットダウンブロックの理由の登録解除 (ShutdownBlockReasonDestroy)
- WM_QUERYENDSESSIONを受信した時の処理のテスト機能
- リスタートマネージャーにアプリの再起動の登録
- リスタートマネージャーにアプリの再起動の登録解除
- シャットダウンブロックの理由の登録
- 一定時間の待機
- 戻り値の設定
- ログファイルの作成機能
リスタートマネージャーに関する動作の確認ができます。
機能の説明
メイン画面 – 左上側
この領域のボタンは、Restart Manager関連のAPIを個別に呼び出してテストできます。
RegisterApplicationRestart()
Windows Vistaで導入されたRegisterApplicationRestart()
を呼び出し、アプリ(ツール自身)の再起動の登録をします。
RegisterApplicationRestart(L"/restart ", RESTART_NO_CRASH | RESTART_NO_HANG);
上記の引数で呼び出します。Windows XP上で実行された場合は何もしません。
UnregisterApplicationRestart()
Windows Vistaで導入されたUnegisterApplicationRestart()
を呼び出し、アプリ(ツール自身)の再起動の登録を解除します。
UnregisterApplicationRestart();
このAPIは引数がないため、単純に呼び出すのみです。Windows XP上で実行された場合は何もしません。
ShutdownBlockReasonCreate()
Windows Vistaで導入されたShutdownBlockReasonCreate()
を呼び出し、シャットダウンをブロックする理由を登録をします。
RegisterApplicationRestart(hDialogWnd, pszReasonW);
上記の引数で呼び出します。hDialogWnd
はこのツールのメインウィンドウのウィンドウハンドルが設定されます。pszReasonW
は、ボタンの下のエディットボックスに設定された文字列が設定されます。Windows XP上で実行された場合は何もしません。
ShutdownBlockReasonDestroy()
Windows Vistaで導入されたShutdownBlockReasonDestroy()
を呼び出し、シャットダウンをブロックする理由の登録を解除します。
RegisterApplicationRestart(hDialogWnd);
上記の引数で呼び出します。hDialogWnd
はこのツールのメインウィンドウのウィンドウハンドルが設定されます。Windows XP上で実行された場合は何もしません。
メイン画面 – 右上側
この領域のチェックボックスは、このツールのメイン画面(ダイアログ)がWM_QUERYENDSESSIONメッセージを受信したときに行う動作を設定できます。複数のチェックボックスをチェックした場合は、WM_QUERYENDSESSIONメッセージのメッセージハンドラ内では、上から順番に処理されます。
Call RegisterApplicationRestart()
Windows Vistaで導入されたRegisterApplicationRestart()
を呼び出し、アプリ(ツール自身)の再起動の登録をします。
RegisterApplicationRestart(L"/restart ", RESTART_NO_CRASH | RESTART_NO_HANG);
上記の引数で呼び出します。Windows XP上で実行された場合は何もしません。
Call UnregisterApplicationRestart()
Windows Vistaで導入されたUnegisterApplicationRestart()
を呼び出し、アプリ(ツール自身)の再起動の登録を解除します。
UnregisterApplicationRestart();
このAPIは引数がないため、単純に呼び出すのみです。Windows XP上で実行された場合は何もしません。
Call ShutdownBlockReasonCreate()
Windows Vistaで導入されたShutdownBlockReasonCreate()
を呼び出し、シャットダウンをブロックする理由を登録をします。
RegisterApplicationRestart(hDialogWnd, pszReasonW);
上記の引数で呼び出します。hDialogWnd
はこのツールのメインウィンドウのウィンドウハンドルが設定されます。pszReasonW
は、左側の領域のエディットボックスに設定された文字列が設定されます。Windows XP上で実行された場合は何もしません。
Wait 20 sec.
メッセージハンドラ内で20秒間待機します。Windows Vista以降では、アプリはWM_QUERYENDSESSIONメッセージに5秒以内に応答しなければいけないので、そのテストができます。具体的には、チェックをした場合にSleep()
を呼び出します。
Sleep(20000);
上記の引数で呼び出します。
Return false
WM_QUERYENDSESSIONメッセージハンドラーの戻り値を決定します。チェックされていない場合は、trueを戻り値とします。チェックがされていた場合は、falseを戻り値とします。trueはアプリが終了できる状態であることを表します。falseはアプリがシャットダウンを拒否したことに相当します。
メイン画面 – 下側
Result
右側のエディットボックスは最後に実行したAPIのエラーコードが設定されます。下側の複数行のエディットボックスは、各APIを呼び出した結果や、リスタートマネージャーに関するウィンドウメッセージを受信したタイミングの記録が表示されます。
Ceate message log file
チェックしておくと、各APIを呼び出した結果や、リスタートマネージャーに関するウィンドウメッセージを受信したタイミングの記録をファイルに出力します。基本的に画面内に表示されている履歴と同じものをファイルに出力します。出力ファイルは、EXEファイルと同じ場所に作成されます。ファイル名はEXEファイル名に拡張子”.log”を追加した名前です。
このアプリのトップページに戻る
デスクトップアプリのリスタートマネージャー4(RmLogoTestによる動作確認)
前回に続き今回もデスクトップアプリ開発におけるリスタートマネージャー(Restart Manager)について投稿したいと思います。今回は停止される側の実装が終わった後に動作確認をする方法です。
デスクトップアプリのリスタートマネージャー3(展開アプリへの適用)
前回に続き今回もデスクトップアプリ開発におけるリスタートマネージャー(Restart Manager)について投稿したいと思います。今回は停止される側でのアプリとしてFile Package Appで作成したパッケージを例として設計・実装の説明をしたいと思います。
File Package App 0.6.2
より新しいバージョンが公開されたのでこのページからはダウンロードしないでください。このページを参照してください。
File Package App 0.6.2 のダウンロードページです。
上記の”Verify CAPTCHA to Download”内の”DOWNLOAD”リンクからダウンロードできます。もし、”Verify CAPTCHA to Download”内に、”私はロボットではありません”と表示されている場合は、チェックを入れて、指示のある画像を選択してください。画像を正しく選択するとダウンロードできます。
このバージョンについて
このアプリの6回目のリリースです。このバージョンでは、
- 基本機能・オプション機能のUIの改善
- 拡張機能の一部を基本機能に移動
- 拡張機能の表示の不具合修正
を行いました。 “File Package App 0.6.2” の続きを読む
自己展開形式EXEファイル作成アプリ3(ファイル更新パッチのパッケージを作成)
File Package App (ファイルパッケージアプリ)の紹介です。前回の投稿では、このアプリの拡張機能の概要を紹介しました。今回は拡張機能を使ったファイル更新パッチのパッケージ作成方法を紹介したいと思います。 “自己展開形式EXEファイル作成アプリ3(ファイル更新パッチのパッケージを作成)” の続きを読む
デスクトップアプリのリスタートマネージャー2(アプリ停止のためのウィンドウメッセージ)
前回に続き今回もデスクトップアプリ開発におけるリスタートマネージャー(Restart Manager)について投稿したいと思います。今回は停止される側であるアプリ側が受け取るウィンドウメッセージとその対応する方法です。
デスクトップアプリのリスタートマネージャー1(概要)
今回は、デスクトップアプリ開発におけるリスタートマネージャー(Restart Manager)について投稿したいと思います。今回は概要です。詳細についても順次投稿していきたいと思います。