スクリーンセーバーの起動時間を取得/設定するには、SystemParametersInfo
API を使用します。
BOOL SystemParametersInfo(
UINT uiAction, // 取得または設定するべきシステムパラメータ
UINT uiParam, // 実施するべき操作によって異なる
PVOID pvParam, // 実施するべき操作によって異なる
UINT fWinIni // ユーザープロファイルの更新オプション
);
uiAction
パラメータに下記の値を指定することでスクリーンセーバーの起動時間に関しての操作を行えます。
SPI_GETSCREENSAVETIMEOUT
: タイムアウト時間を取得するSPI_SETSCREENSAVETIMEOUT
: タイムアウト時間を設定するint seconds;
::SystemParametersInfo(SPI_GETSCREENSAVETIMEOUT, 0, &seconds, 0);
::SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT, 10*60, NULL, 0);
以下のプログラム setsaver.exe
は、コマンドラインから「スクリーンセーバ起動までの待ち時間(秒数)」を設定するツールです。
パラメータなしで起動すると、現在の設定(秒数)を表示します。
D:> setsaver.exe
Usage: setsaver.exe [seconds]
Current timeout is 1800 seconds
D:> setsaver.exe 300
Set screensaver timeout: 300 seconds
Windows Vista (32bit)、Windows 7 (64bit) で動作確認済みです。
Windows 起動時に自動で実行したければ、Startup
ディレクトリにショートカットを作成して、プロパティからタイムアウト時間をパラメータ指定しておけば OK。
C:\> g++ -o setsaver.exe -static -luser32 setsaver.cpp