2021.11.18
INASOFT
/トップ/マウスふるふる ダウンロード/WebHelp/ヘルプトップ
動作原理で登場した(マウスふるふるが利用している、ヘルプ中で登場する)主なWindows API解説
ShutdownBlockReasonCreate
OSに対してシステムをシャットダウンできないことを示し、システムのシャットダウンが開始された場合にユーザーに表示される理由文字列を設定します。
Windows XPまでは、WM_QUERYENDSESSIONにreturn 0;するだけでOS終了拒否できましたが、Windows Vista以降でOS終了拒否をするには、WM_QUERYENDSESSIONにreturn 0;するだけでなくShutdownBlockReasonCreate() APIで拒否理由をOSに伝える必要があります。
この関数は、Windows Vista以降で呼び出すことができます。
BOOL WINAPI ShutdownBlockReasonCreate(HWND hWnd, LPCWSTR pwszReason);
パラメータ
- hWnd
呼び出し元のメインウィンドウのウィンドウハンドルを指定します。OS終了を拒否しているアプリケーションの名称をOSが画面上に表示するために使用します。
- pwszReason
アプリケーションがシステムのシャットダウンをブロックする必要がある理由を文字列で指定します。MAX_STR_BLOCKREASON(256)文字以降は切り捨てられます。
戻り値
0以外 … 成功。
0 … 失敗。拡張エラー情報を取得するには、GetLastError() APIを使用すること。
解説
このAPIは、hWndで指定したウィンドウを作成したスレッドからのみ呼び出せます。それ以外の場合はこのAPIは失敗し、エラーコードはERROR_ACCESS_DENIEDになります。
アプリケーションは、CDやDVDの書き込みなど、中断できない操作を開始するときにこのAPIを呼び出す必要があります。操作が完了したら、ShutdownBlockReasonDestroy() API呼び出して、システムをシャットダウンできることを示すようにしてください。
ユーザーは通常、システムをシャットダウンするときに急いでいるため、システムによって表示されるシャットダウンの理由を確認するのに数秒しか費やさない場合があります。したがって、理由文字列は短く明確であることが重要です。例えば「CD書き込みが進行中のため、このアプリケーションはシステムのシャットダウンをブロックしています。シャットダウンしないでください。」よりも「CDの書き込みが進行中です。」の方が優れています。
とはいえ、Windows 10以降では、ユーザーの意図でシャットダウンするよりも、強制的なWindows Updateの適用で、ユーザーの意図に反してシャットダウンされることが多いように思います。そういった場合にも、このAPIの活用が見込まれます。
このAPIで設定した理由文字列は、ShutdownBlockReasonQuery() APIで取り出せます。
サンプル
マウスふるふるが利用しているWindows API解説へ
目次へ
※このページは、ソフトウェアに付属のヘルプファイルをWeb用に再構築したものです。大部分に自動変換を施しているため、一部は正しく変換しきれずに表示の乱れている箇所があるかもしれませんが、ご容赦下さい。また、本ドキュメントはアーカイブドキュメントであり、内容は、右上の作成日付の時点のものとなっております。一部、内容が古くなっている箇所があるかと思いますが、あらかじめご了承下さい。
※このページへは、自由にリンクしていただいてかまいません。
■このページに関するご意見をお待ちしております → フィードバックページ