サウンド表示情報を取得          <TOP>


SystemParametersInfo システム全体に関するパラメータを取得・設定
lstrcpy 文字列をコピーする
 

下図のチェックボックス、ラジオボタンを選択した場合の状態を表示させています。

 

'================================================================
'= サウンド表示情報を取得
'=    (SoundSentry.bas)
'================================================================
#include "Windows.bi"

Type tagSOUNDSENTRY
    cbSize                 As Long
    dwFlags                As Long
    iFSTextEffect          As Long
    iFSTextEffectMSec      As Long
    iFSTextEffectColorBits As Long
    iFSGrafEffect          As Long
    iFSGrafEffectMSec      As Long
    iFSGrafEffectColor     As Long
    iWindowsEffect         As Long
    iWindowsEffectMSec     As Long
    lpszWindowsEffectDLL   As Long
    iWindowsEffectOrdinal  As Long
End Type

#define SSF_AVAILABLE &H2               'サウンド機能使用可能
#define SSF_INDICATOR &H4               'SoundSentryがついている間、システムアイコンを表示
#define SSF_SOUNDSENTRYON &H1           'サウンド機能ON
#define SPI_GETSOUNDSENTRY 64           'ユーザー補助機能のサウンド解説に関する情報を定義するSOUNDSENTRY構造体を取得
#define MAX_PATH 260
#define SSWF_CUSTOM 4                   'lpszWindowsEffectDLLで指定するDLLからエクスポートされるSoundSentryProcを呼び出す(Windows9x)
#define SSWF_DISPLAY 3                  'ディスプレイ全体を点滅
#define SSWF_NONE 0                     'ビジュアル効果なし
#define SSWF_TITLE 1                    'アクティブウィンドウのキャプションバーを点滅

' システム全体に関するパラメータを取得・設定
Declare Function Api_SystemParametersInfo& Lib "user32" Alias "SystemParametersInfoA" (ByVal uiAction&, ByVal uiParam&, pvParam As Any, ByVal fWinIni&)

' 文字列をコピーする
Declare Function Api_lstrcpy$ Lib "Kernel32" Alias "lstrcpy" (lpszString1$, lpszString2 As Any)

Var Shared List1 As Object
Var Shared Button1 As Object

List1.Attach GetDlgItem("List1") : List1.SetFontSize 12
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var tss As tagSOUNDSENTRY
    Var edll As String * MAX_PATH
    Var Ret As Long

    'リストボックスをクリア
    List1.ResetContent

    '構造体を初期化
    tss.cbSize = Len(tss)

    'サウンド表示の情報を取得
    Ret = Api_SystemParametersInfo(SPI_GETSOUNDSENTRY, Len(tss), tss, 0)

    'サウンド表示の情報を表示
    If (tss.dwFlags And SSF_SOUNDSENTRYON) = SSF_SOUNDSENTRYON Then
        List1.AddString "サウンド表示:有効"
    End If

    If (tss.dwFlags And SSF_AVAILABLE) = SSF_AVAILABLE Then
        List1.AddString "サウンド表示:あり"
    End If

    If (tss.iWindowsEffect And SSWF_NONE) = SSWF_NONE Then
        List1.AddString "表 示:[なし]"
    End If

    If (tss.iWindowsEffect And SSWF_TITLE) = SSWF_TITLE Then
        List1.AddString "表 示:アクティブタイトルバー"
    End If

    If (tss.iWindowsEffect And SSWF_WINDOW) = SSWF_WINDOW Then
            List1.AddString "表 示:アクティブウィンドウ"
    End If

    If (tss.iWindowsEffect And SSWF_DISPLAY) = SSWF_DISPLAY Then
        List1.AddString "表 示:デスクトップ"
    End If

    If (tss.iWindowsEffect And SSWF_CUSTOM) = SSWF_CUSTOM Then
        List1.AddString "表 示:カスタム"
    End If

    'DLL名が含まれているとき
    If tss.lpszWindowsEffectDLL <> 0 Then
        edll = Api_lstrcpy(edll, tss.lpszWindowsEffectDLL)
        List1.AddString "DLL名:" & Left$(edll, InStr(edll, Chr$(0)) - 1)
    End If
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End