Windows の休止状態、スタンバイするには次の手順で行います。(戻る)
- 休止状態、スタンバイさせるために SE_SHUTDOWN_NAME 特権を有効にする(ProcessPrivilegeName)
- 休止状態、スタンバイさせるAPIを呼び出す(SetSystemPowerState)
Windows 95/98/Me では(1)の特権を有効にする必要はありません。
プロトタイプ宣言
HANDLE GetCurrentProcess( VOID ); BOOL SetSystemPowerState( BOOL fSuspend, // サスペンド状態(TRUE=スタンバイ、FALSE=休止状態) BOOL fForce // 強制的に中断(TRUE=強制的、FALSE=問い合わせる) );
サンプル
#include <stdio.h> #include <windows.h> // メイン関数 int main( void ) { BOOL bFlag = FALSE; UINT uMenu; do { printf( TEXT("\n") ); printf( TEXT("1...休止状態\n") ); printf( TEXT("2...スタンバイ\n") ); scanf( TEXT("%d"), &uMenu ); switch ( uMenu ){ case 1: bFlag = FALSE; break; case 2: bFlag = TRUE; break; default: uMenu = 0; break; } } while ( uMenu == 0 ); // Windows NT 系のために SE_SHUTDOWN_NAME 特権を有効にする ProcessPrivilegeName( GetCurrentProcess(), SE_SHUTDOWN_NAME, TRUE ); // 休止状態/スタンバイを実行する SetSystemPowerState( bFlag, FALSE ); return 0; }
- Windows 95/98/Me では SE_SHUTDOWN_NAME 特権を有効にする必要はありません。
- ProcessPrivilegeName 関数は前回紹介した自作関数です。(API関数ではありません)
補足情報
- SetSystemPowerState 関数の第二引数を TRUE にすると強制的に休止状態/スタンバイを行えます。
関連記事
- 指定した特権名の有効/無効
- Windows の終了/再起動/ログオフ
- Windows の休止状態/スタンバイ
- コンピュータのロック
- [HSP]シャットダウンの命令群
※コメント投稿者のブログIDはブログ作成者のみに通知されます