● スクリーンセイバーを起動する ●

定番のスクリーンセイバー起動法!!VBではこれ以外方法はないでしょ。スクリーンセイバーが設定されているかのチェックもしているので、安心して使えるはず。

Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef lpvParam As Long, ByVal fuWinIni As Long) As Long

Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Private Const WM_SYSCOMMAND = &H112&
Private Const SC_SCREENSAVE = &HF140&
Private Const SPI_GETSCREENSAVEACTIVE = 16
Private Const SPIF_UPDATEINIFILE = &H1

'---------------------------------------------------------------
'  関数名: ExecuteScreenSaver
'  機  能: スクリーンセイバーを起動する
'  引  数: (in) hWnd … フォームのハンドル
'  返り値:なし
'---------------------------------------------------------------
Public Sub ExecuteScreenSaver(ByVal hwnd As Long)

    Dim flgScreenSave As Long

    'コントロールパネルでスクリーンセーバーが設定されているかチェックする
    If SystemParametersInfo(SPI_GETSCREENSAVEACTIVE, 0, _
                            flgScreenSave, SPIF_UPDATEINIFILE) <> 0 Then

        'コントロールパネルで設定されている
        If flgScreenSave = 1 Then
            '若干、マウスのぶれの余裕を見る←必要があれば挿入する
            'Call Sleep(500)
            'DoEvents

            'スクリーンセイバー起動
            Call SendMessageLong(hwnd, WM_SYSCOMMAND, SC_SCREENSAVE, 0&)

        '設定されていない

        Else
            Call MsgBox("スクリーンセイバーが設定されていません。", _
                          vbOKOnly + vbInformation, "スクリーンセイバー起動 - エラー")
        End If
    End If

戻る