[リストへもどる]
一括表示

投稿時間:2002/09/10(Tue) 10:59
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
WindowsXPでスクリーンセーバーを起動
Windows98 ではスクリーンセーバーを起動する事が出来るのですが
WindowsXP では同じ操作では起動できません。

ある方から下記のようなメールを頂いたのですが、試して見てもやはり起動
しませんでした。

>XP では起動しませんってのとこですが,
>SendMessage(GetDesktopWindow(), WM_SYSCOMMAND, SC_SCREENSAVE, NULL);
>にてちゃんと起動します.


Option Explicit

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

Private Declare Function GetDesktopWindow Lib "user32" () As Long

Private Const WM_SYSCOMMAND = &H112
Private Const SC_SCREENSAVE = &HF140
Private Sub Command1_Click()
    Dim Ret As Long
    Dim hwnd As Long
    
    hwnd = GetDesktopWindow
    Ret = SendMessage(hwnd, WM_SYSCOMMAND, SC_SCREENSAVE, ByVal vbNullString)
End Sub

どなたかWindowsXPでスクリーンセーバーを起動する方法をご存知の方
教えて頂けないでしょうか?

投稿時間:2002/09/10(Tue) 11:49
投稿者名:とろ
Eメール:
URL :
タイトル:
Re: WindowsXPでスクリーンセーバーを起動
> Windows98 ではスクリーンセーバーを起動する事が出来るのですが
> WindowsXP では同じ操作では起動できません。

WindowsNT でも起動できませんね。

投稿時間:2002/09/10(Tue) 13:03
投稿者名:K.J.K.
Eメール:akiya@koalanet.ne.jp
URL :
タイトル:
Re: WindowsXPでスクリーンセーバーを起動
NT系は、ScreenSaver用のDesktopにアタッチして云々、だったような。
WIndowStationからやらないと駄目かも。(うろ覚え)

投稿時間:2002/09/10(Tue) 14:28
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^2: WindowsXPでスクリーンセーバーを起動
とろさん、K.J.K さん、回答ありがとうございます。
やはりこの設定では起動できないのですね!
ワザワザ、メールでご指摘頂いたものですから、私の設定か環境に問題が
あるのかなとも思ったのですが?

投稿時間:2002/09/10(Tue) 23:33
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
(解決)WindowsXPでスクリーンセーバーを起動
あれから、色々調べていて、定数を Long 型に型指定する事で起動できる
ようになりました。
Private Const SC_SCREENSAVE = &HF140 → Private Const SC_SCREENSAVE = &HF140&

Private Declare Function SendMessage Lib "user32" _
    Alias "SendMessageA" (ByVal hwnd As Long, _
    ByVal wMsg As Long, ByVal wParam As Long, _
    lParam As Any) As Long
Private Const WM_SYSCOMMAND = &H112
Private Const SC_SCREENSAVE = &HF140&

Private Sub Command1_Click()
    Dim Ret As Long
    Dim hwnd As Long
    Ret = SendMessage(Me.hwnd, WM_SYSCOMMAND, SC_SCREENSAVE, ByVal 0&)
End Sub

その部分が問題で、後は PostMessage API を使っても GetDesktopWindow API を使っても
関係ないようでした。
お騒がせしました。