プログラミング研究所 プログラミング研究所 http://www.program-lab.jp/
プログラミング研究所
プログラム研究自作ソフトウェアプログラムメモリンク


  • カテゴリ別アーカイブ

    .NET Framework
    C++/CLI
    DirectX
    GBA
    JavaScript
    OSSの移植
    PHP
    Win32/64
    WordPress
    その他
    ソフトウェアの設定
    ツール
    ライブラリ
    自作ソフト
    製品レビュー


  • エントリ一覧


    Syndicate this site (XML)

    Powered by
    Movable Type







  • 管理者:NMVL

    nmvl★program-lab.jp
    ※アドレスの ★ を @ に置き換えてください。

    釣りの話題はこちらから
    www.fishing.hokkaido.jp






    « コンピュータ関連用語辞典 | メイン | 環境変数の展開 »

  • Windowsを終了させる 【Win32/64】

    Windowsを終了させるには、ExitWindowsExを使用する。

    BOOL ExitWindowsEx(
    UINT uFlags, // shutdown operation
    DWORD dwReserved // reserved
    );
    ※MSDNライブラリより引用

    uFlagsには、以下のフラグを使用する
    EWX_LOGOFF:ログオフ
    EWX_POWEROFF:(シャットダウン後)電源OFF
    EWX_REBOOT:再起動
    EWX_SHUTDOWN:シャットダウン

    また、EWX_FORCEを併用することでシャットダウンの強制実行が可能となる。
    通常のシャットダウンでは、シャットダウン前にWM_QUERYENDSESSIONが各アプリケーションに送信される。アプリケーションはそれに対して、シャットダウンを了承するか拒否するか返さなければならない(デフォルトプロシージャでは了承される)。全てのアプリケーションがシャットダウンを了承した場合、WM_ENDSESSIONを送信し、シャットダウン処理へ移行する。
    EWX_FORCEは、WM_QUERYENDSESSIONやWM_ENDSESSIONを省略し、即座にシャットダウン処理へ移行する。アプリケーションによっては、WM_QUERYENDSESSIONにより、ファイルを保存するか問い合わせてくるものもある(Excel等)ため、EWX_FORCEの使用には注意が必要である。

    また、スタンバイ・休止状態に移行するには、SetSystemPowerStateを使用する。

    BOOL SetSystemPowerState(
    BOOL fSuspend,
    BOOL fForce
    );
    ※MSDNライブラリより引用

    MSDNライブラリでは、fSuspendはIgnoreとなっているが、私の環境で確認した限りでは、fSuspend=TRUEでスタンバイへ、fSuspend=FALSEで休止状態となるようである(休止状態を有効にしていない場合はスタンバイになり、fSuspendはIgnore)。
    fForceは、ExitWindowsExとほぼ同じ意味であり、PBT_APMQUERYSUSPEND・PBT_APMSUSPEND の送信を省略するものである。

    なお、MSDNライブラリにもあるが、WindowsNT(2000/XP/2003他)で、シャットダウンを行うためには、特権が必要となる。



    投稿者 NMVL : 2004年3月17日 15:55