スクリーンセーバーが開始されないようにするには
ある特定のアプリケーションが起動しているとき、スクリーンセーバーが動いていると困ることがあります。
たとえば、CDRライティング中にスクリーンセーバーが動いて負荷が高くなるとライティングに失敗することがあります。
このようなときに一時的にスクリーンセーバーが動作しないようにアプリケーションから制御できると便利です。
スクリーンセーバーが開始されないようにする SystemParametersInfo () API で SPI_SETSCREENSAVEACTIVE を指定することによりできます。
SystemParametersInfo () API の第2引数にTRUEを設定すると開始されるようになります。逆にFALSEを設定すると開始されないようになります。
下記は、ONボタンを押すとスクリーンセーバーが開始される状態になり、OFFボタンを押すとスクリーンセーバーが開始されない状態になります。
画面のプロパティでスクリーンセーバーが1分後に起動するように設定した上でサンプルを動作させて1分放置してみてください。
■■■ scrnsvrop プロジェクト
■ main.cpp
#include <windows.h>
#include <tchar.h>
#include "resource.h"
BOOL CALLBACK DialogFunc ( HWND hWnd,
UINT nMessage,
WPARAM wParam,
LPARAM lParam )
{
switch ( nMessage ) {
case WM_COMMAND:
switch ( LOWORD ( wParam ) ) {
case IDC_ON_BUTTON:
{
BOOL bSuccess;
bSuccess = SystemParametersInfo ( SPI_SETSCREENSAVEACTIVE,
TRUE,
NULL,
SPIF_SENDCHANGE | SPIF_UPDATEINIFILE );
if ( bSuccess )
{
MessageBox ( hWnd,
_TEXT ( "スクリーンセーバーが開始される設定になりました。" ),
_TEXT ( "確認" ),
MB_OK );
}
else
{
MessageBox ( hWnd,
_TEXT ( "スクリーンセーバーが開始される設定に変更できませんでした。" ),
_TEXT ( "エラー" ),
MB_OK | MB_ICONSTOP );
}
}
return TRUE;
case IDC_OFF_BUTTON:
{
BOOL bSuccess;
bSuccess = SystemParametersInfo ( SPI_SETSCREENSAVEACTIVE,
FALSE,
NULL,
SPIF_SENDCHANGE | SPIF_UPDATEINIFILE );
if ( bSuccess )
{
MessageBox ( hWnd,
_TEXT ( "スクリーンセーバーが開始されない設定になりました。" ),
_TEXT ( "確認" ),
MB_OK );
}
else
{
MessageBox ( hWnd,
_TEXT ( "スクリーンセーバーが開始されない設定に変更できませんでした。" ),
_TEXT ( "エラー" ),
MB_OK | MB_ICONSTOP );
}
}
return TRUE;
case IDCANCEL:
EndDialog ( hWnd, 0 );
return TRUE;
}
break;
}
return FALSE;
}
// エントリポイント
int WINAPI _tWinMain ( HINSTANCE hThisInstance,
HINSTANCE,
_TCHAR *,
int )
{
int nResponse;
nResponse = DialogBox ( hThisInstance, MAKEINTRESOURCE ( IDD_MAIN_DIALOG ), NULL, DialogFunc );
return nResponse;
}
|
■ resource.h
#define IDD_MAIN_DIALOG 101
#define IDC_ON_BUTTON 1000
#define IDC_OFF_BUTTON 1001 |
■ resrc.rc
#include <winres.h>
IDD_MAIN_DIALOG DIALOG DISCARDABLE 0, 0, 203, 135
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "スクリーンセーバー 操作"
FONT 9, "MS Pゴシック"
BEGIN
PUSHBUTTON "&ON",IDC_ON_BUTTON,15,12,50,14
PUSHBUTTON "&OFF",IDC_OFF_BUTTON,83,12,50,14
LISTBOX IDC_LIST1,8,40,188,82,LBS_NOINTEGRALHEIGHT | WS_VSCROLL |
WS_TABSTOP
END |
|