タイトル | スクリーンセーバーの情報を取得する |
対象言語 | VB4.0, Access95以降 |
動作確認OS | Windows95,98,NT4.0 |
使用関数 | GetPrivateProfileString SystemParametersInfo |
改築日 | 1998/03/17 |
Source Download |
コントロールパネルで設定している スクリーンセーバーの設定値を取得します。 スクリーンセーバーの情報(ファイル名、起動ステータス、 起動するまでの待ち時間)を レジストリ及び SYSTEM.INI から取得します。 |
![]() |
1. フォームを作成し、テキストボックス(Text1)とコマンドボタン(Command1)を貼り付けてください。 2. コマンドボタンのClick時のイベントに下のソースを入力してください。 Option Explicit Private Sub Command1_Click() Dim ScrInfo As ScrSaverInfo Dim text As TextBox Dim iti(1) As String iti(0) = "オフ" iti(1) = "オン" Set text = Me!Text1 ScrInfo = Y_GetScreenSaverInfo() text = "ファイル = " & ScrInfo.ScrSaveName & vbCrLf text = Text1 & "起動 = " & iti(ScrInfo.ScrSaveFlg) & vbCrLf text = Text1 & "実行までの待ち時間 = " & ScrInfo.ScrSaveTime / 60 & "分" End Sub |
3.モジュールウインドウを作成し、下のソースを入力してください。 Option Explicit 'INIファイルから値を取得する Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, _ ByVal lpKeyName As Any, ByVal lpDefault As String, _ ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long 'スクリーンセーバー情報を取得する Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, _ lpvParam As Any, ByVal fuWinIni As Long) As Long Public Const SPI_GETSCREENSAVEACTIVE = 16 'セーバーが起動ONかを取得 Public Const SPI_GETSCREENSAVETIMEOUT = 14 'セーバー起動までの待ち時間(秒)を取得する Public Const SPIF_SENDWININICHANGE = &H2 Public Const MAX_PATH = 260 Type ScrSaverInfo ScrSaveName As String 'スクリーンセーバーファイル名 ScrSaveFlg As Long '0:スクリーンセーバーOFF 1:ON ScrSaveTime As Long '実行までの待ち時間(秒) End Type Public Function Y_GetScreenSaverInfo() As ScrSaverInfo '*********************************************************** '機能 : スクリーンセーバー設定情報を取得する '戻り値: スクリーンセーバー情報 '*********************************************************** Dim ScrInfo As ScrSaverInfo Dim secion As String Dim file As String secion = "boot" file = "SYSTEM.INI" With ScrInfo .ScrSaveName = Y_GetINIValue(secion, "SCRNSAVE.EXE", MAX_PATH, file) .ScrSaveFlg = Y_GetSystemParameters(SPI_GETSCREENSAVEACTIVE) .ScrSaveTime = Y_GetSystemParameters(SPI_GETSCREENSAVETIMEOUT) End With Y_GetScreenSaverInfo = ScrInfo End Function Public Function Y_GetINIValue(SecionName As String, KeyName As String, BufSize As Long, INIFile As String) As String '*********************************************************** '機能 : INIファイルの値を取得する '引数 : SecionName = 取得するセッション名 ' KeyName = 取得するキー名 ' BufSize = データを受け取るバッファの最大サイズ ' INIFile = 取得するINIファイルのフルパス '戻り値: キーの値 '備考 : INIFileにフルパスを指定しなければ Windowsフォルダ ' がデフォルトになります。 '*********************************************************** Dim StrBuf As String Dim longret As Long StrBuf = Space$(BufSize) 'INIファイルから値を取得する longret = GetPrivateProfileString(SecionName, KeyName, "", StrBuf, BufSize, INIFile) Y_GetINIValue = BufEdit(StrBuf) End Function Public Function BufEdit(Buf As String) As String '*********************************************************** '機能 : 引数 Bufの文字列中の Nullコードを検索し、Nullコードを ' 除いた文字列を返す '引数 : Buf = Nullコードを含む文字列 '戻り値: Nullコードを除いた文字列 '*********************************************************** Dim i As Long i = InStr(Buf, vbNullChar) If i <> 0 Then BufEdit = Left$(Buf, i - 1) Else BufEdit = Buf End If End Function Public Function Y_GetSystemParameters(Action As Long) As Long '*********************************************************** '機能 : GetSystemParametersInfo関数を呼び、指定したアクション ' の結果を取得する '引数 : Action = 取得するシステムパラメータ '戻り値: システムパラメータの値 '*********************************************************** Dim UpdateProfile As Long Dim pvParam As Long UpdateProfile = SPIF_SENDWININICHANGE If SystemParametersInfo(Action, 0, pvParam, UpdateProfile) = 1 Then Y_GetSystemParameters = pvParam Else Call MsgBox("SystemParametersInfo関数取得に失敗しました。") End If End Function |
Copyright (C)1997-2001 空耳工房 MY2Project All rights reserved. |