ハイコントラスト機能情報を取得          <TOP>


ハイコントラスト機能の情報を取得します。

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

右:ユーザー補助のオプション → 画面 → ハイコントラストの設定 で一部を確認しています。

 

 

'================================================================
'= ハイコントラスト機能情報を取得
'=    (SPI_GETHIGHCONTRAST.bas)
'================================================================
#include "Windows.bi"

Type HIGHCONTRAST
    cbSize            As Long
    dwFlags           As Long
    lpszDefaultScheme As Long
End Type

#define HCF_AVAILABLE &H2               'ハイコントラストモード機能あり
#define HCF_CONFIRMHOTKEY &H8           'ショートカットキーの有効時に確認
#define HCF_HIGHCONTRASTON &H1          'ハイコントラスト機能有効
#define HCF_HOTKEYACTIVE &H4            '[Alt]+[Shift]+[PrintScreen]でショートカットキーを使う
#define HCF_HOTKEYAVAILABLE &H40        'ショートカットキーあり
#define HCF_HOTKEYSOUND &H10            'ショートカットキーの有効時に音
#define HCF_INDICATOR &H20              'ハイコントラスト機能の状態を表示
#define SPI_GETHIGHCONTRAST 66          'ユーザー補助機能のハイコントラストの設定状況を定義するHIGHCONTRAST構造体を取得

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

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

Var Shared List1 As Object
Var Shared Button1 As Object

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

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var hc As HIGHCONTRAST
    Var Scheme As String * 255
    Var Ret As Long

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

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

    'ハイコントラスト機能の情報を取得
    Ret = Api_SystemParametersInfo(SPI_GETHIGHCONTRAST, Len(hc), hc, 0)

    'ハイコントラスト機能の情報を表示
    If (hc.dwFlags And HCF_HIGHCONTRASTON) = HCF_HIGHCONTRASTON Then
        List1.AddString "ハイコントラスト機能有効"
    End If

    If (hc.dwFlags And HCF_AVAILABLE) = HCF_AVAILABLE Then
        List1.AddString "ハイコントラスト機能あり"
    End If

    If (hc.dwFlags And HCF_HOTKEYACTIVE) = HCF_HOTKEYACTIVE Then
        List1.AddString "ショートカットキーを使う"
    End If

    If (hc.dwFlags And HCF_CONFIRMHOTKEY) = HCF_CONFIRMHOTKEY Then
        List1.AddString "ショートカットキーの有効時に確認"
    End If

    If (hc.dwFlags And HCF_HOTKEYSOUND) = HCF_HOTKEYSOUND Then
        List1.AddString "ショートカットキーの有効時に音"
    End If

    If (hc.dwFlags And HCF_INDICATOR) = HCF_INDICATOR Then
        List1.AddString "ハイコントラスト機能の状態を表示"
    End If

    If (hc.dwFlags And HCF_HOTKEYAVAILABLE) = HCF_HOTKEYAVAILABLE Then
        List1.AddString "ショートカットキーあり"
    End If

    Ret = Api_lstrcpy(Scheme, ByVal hc.lpszDefaultScheme)
    List1.AddString "表示設定:" & Left$(Scheme, InStr(Scheme, Chr$(0)) - 1)
End Sub

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