電源をサスペンド状態にする方法【Windows API】

プログラムからパソコンの電源をサスペンド(スタンバイ)状態にします。 プログラムの終了時にサスペンドモードにしておきたい場合などに重宝します。

void SetSuspendMode()
{
    HANDLE hToken;
    TOKEN_PRIVILEGES tknPrvlgs;

    OpenProcessToken(GetCurrentProcess(),
                     TOKEN_ADJUST_PRIVILEGES, &hToken);
    LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
                         &(tknPrvlgs.Privileges[0].Luid));
    tknPrvlgs.PrivilegeCount = 1;
    tknPrvlgs.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    AdjustTokenPrivileges(hToken, FALSE, &tknPrvlgs, 0, NULL, NULL);
    SetSystemPowerState(TRUE, FALSE);
}

まとめ

今回でWindows APIシリーズも一旦の最終回となります。10年以上前の2007年に連載開始されたこのシリーズも歴史的使命を終えつつあります。Windows APIを実際の業務で使っている人も、いまは僅かでしょう。そもそもC++でプログラムをつくる案件が、いまどれくらい残っているのかも不明です。Web全盛の時代です。

復活する日まで、さようなら!

Windows API

Posted by @erestage