dポイントプレゼントキャンペーン実施中!

VBでスクリーンセーバの設定・解除を行いたいのですが、
方法がわかりません。(そんなことはできるのでしょうか??)
ちなみに、OSはWindows2000Professionalを使用しております。

A 回答 (2件)

#1さんが回答していたので、そちらで解決するかと思いましたが、本に載っていた、APIとは違うものだったので、一応書きます。


私はWindows98を使用していて、この方法は使えませんので、うまくいくかは試していません。試してみてください。
(Windows95/98/Meはスクリーンセーバーの情報がレジストリに保存されず、
System.iniに保存されているため、他のAPI関数を使うのだそうです)

スクリーンセーバーを設定する方法です。
解除する方法は、わかりませんが
strScreenSaverFileName = .List(.ListIndex)

strScreenSaverFileName = ""
にすればもしかしたら、解除されるかもしれません。

リストボックスとコマンドボタンを貼り付けて
以下のコードをコピー貼り付け(そのまま記載していますので、著作権の問題とかあるのでしょうか?)

Private Sub Command1_Click()
Dim lngHandleRegistryKey As Long
Dim strScreenSaverFileName As String
Dim lngResult As Long

' スクリーンセーバーを指定
With List1
strScreenSaverFileName = .List(.ListIndex)
End With
' レジストリキーをオープン
lngResult = _
RegOpenKeyEx( _
HKEY_CURRENT_USER, _
"Control Panel\Desktop", _
0, _
KEY_SET_VALUE, _
lngHandleRegistryKey)
lngResult = _
RegSetValueEx( _
lngHandleRegistryKey, _
"SCRNSAVE.EXE", _
0, _
REG_SZ, _
ByVal strScreenSaverFileName, _
Len(strScreenSaverFileName))
' レジストリキーを解放
lngResult = _
RegCloseKey(lngHandleRegistryKey)
End Sub

Private Sub Form_Load()
Dim strSystemDirectory As String
Dim strScreenSaverFileName As String
Dim lngWin32apiResultCode As Long

' 変数のバッファを確保
strSystemDirectory = Space(MAX_PATH)
' システムフォルダを取得
lngWin32apiResultCode = _
GetSystemDirectory(strSystemDirectory, _
Len(strSystemDirectory))
' 変数からシステムフォルダのパスを切り出し
strSystemDirectory = _
Left(strSystemDirectory, _
InStr(strSystemDirectory, _
vbNullChar) - 1)
' スクリーンセーバーの検索パスを設定
strScreenSaverFileName = _
Dir(strSystemDirectory & "\*.scr")
' スクリーンセーバーを列挙
Do
' リストボックスにスクリーンセーバーのフルパスを追加
List1.AddItem _
strSystemDirectory & _
"\" & _
strScreenSaverFileName
' 画像ファイルを取得
strScreenSaverFileName = Dir()
Loop Until strScreenSaverFileName = ""
' リストボックスの先頭アイテムを選択
List1.ListIndex = 0
End Sub

うまくいかなかったらすいません。
    • good
    • 0

設定、解除の意味が微妙ですが・・・


WindowsAPIの、SystemParametersInfo()でいくつかのスクリーンセーバの設定などを変更することが出来ます。
詳細はMSDNを参照ください。

これで設定できない事項でしたら補足をお願いいたします。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!