固定キー機能の情報を取得 <TOP>
SystemParametersInfo システム全体に関するパラメータを取得・設定
'================================================================ '= 固定キー機能の情報を取得 '= (SPI_GETSTICKYKEYS.bas) '================================================================ #include "Windows.bi" Type tagSTICKYKEYS cbSize As Long dwFlags As Long End Type #define SKF_AUDIBLEFEEDBACK &H40 'このフラグが設定されると、システムは、ユーザーが、ロック、ラッチ、サウンド、またはリリース修飾キーは #define SKF_AVAILABLE &H2 '固定キー機能が使用可能 #define SKF_CONFIRMHOTKEY &H8 'Windows9*・Windows2000:確認のダイアログボックスが固定キー機能のホットキーを使用してアクティブに表示・ #define SKF_HOTKEYACTIVE &H4 'ユーザーは、固定キー、Shiftキーを5回押してオンとオフの機能を無効にすることができる #define SKF_HOTKEYSOUND &H10 'システムは、ユーザーが固定ホットキーを使用してオンまたはオフ機能をオンサイレンの音を再生する #define SKF_INDICATOR &H20 'Windows98・Windows2000:視覚的なインジケータは、固定キー機能が表示される必要があります。 #define SKF_LALTLATCHED &H10000000 'Windows98・Windows2000:左[Alt]キーがラッチされる #define SKF_LALTLOCKED &H100000 'Windows98・Windows2000:左[Alt]キーがロックされる #define SKF_LCTLLATCHED &H4000000 'Windows98・Windows2000:左[Ctrl]キーがラッチされる #define SKF_LCTLLOCKED &H40000 'Windows98・Windows2000:左[Ctrl]キーがロックされる #define SKF_LSHIFTLATCHED &H1000000 'Windows98・Windows2000:左[Shift]キーがラッチされる #define SKF_LSHIFTLOCKED &H10000 'Windows98・Windows2000:左[Shift]キーがロックされる #define SKF_LWINLATCHED &H40000000 'Windows98・Windows2000:左[Windows]キーがラッチされる #define SKF_LWINLOCKED &H400000 'Windows98・Windows2000:左[Windows]キーがロックされる #define SKF_RALTLATCHED &H20000000 'Windows98・Windows2000:右[Alt]キーがラッチされる #define SKF_RALTLOCKED &H200000 'Windows98・Windows2000:右[Alt]キーがロックされる #define SKF_RCTLLATCHED &H8000000 'Windows98・Windows2000:右[Ctrl]キーがラッチされる #define SKF_RCTLLOCKED &H80000 'Windows98・Windows2000:右[Ctrl]キーがロックされる #define SKF_RSHIFTLATCHED &H2000000 'Windows98・Windows2000:右[Shift]キーがラッチされる #define SKF_RSHIFTLOCKED &H20000 'Windows98・Windows2000:右[Shift]キーがロックされる #define SKF_RWINLATCHED &H80000000 'Windows98・Windows2000:右[Windows]キーがラッチされる #define SKF_RWINLOCKED &H800000 'Windows98・Windows2000:右[Windows]キーがロックされる #define SKF_STICKYKEYSON &H1 '固定キー機能が有効 #define SKF_TRISTATE &H80 '[Shift]・[Ctrl]・[Alt]を2回押したとき、押し続けていると見なし3回目を押したとき、その設定を解除 #define SKF_TWOKEYSOFF &H100 '別のキーと同時に押している[Shift]・[Ctrl]・[Alt]をアップしたとき、スティックキーをオフにする #define SPI_GETSTICKYKEYS 58 'ユーザー補助機能の固定キーを定義するSTICKYKEYS構造体を取得 ' システム全体に関するパラメータを取得・設定 Declare Function Api_SystemParametersInfo& Lib "user32" Alias "SystemParametersInfoA" (ByVal uiAction&, ByVal uiParam&, pvParam As Any, ByVal fWinIni&) Var Shared List1 As Object Var Shared Button1 As Object Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 List1.Attach GetDlgItem("List1") : List1.SetFontSize 12 '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var tsk As tagSTICKYKEYS Var Ret As Long 'リストボックスをクリア List1.ResetContent '構造体を初期化 tsk.cbSize = Len(tsk) '固定キー機能の情報を取得 Ret = Api_SystemParametersInfo(SPI_GETSTICKYKEYS, Len(tsk), tsk, 0) '固定キー機能の情報を表示 If (tsk.dwFlags And SKF_STICKYKEYSON) = SKF_STICKYKEYSON Then List1.AddString "固定キー機能有効" End If If (tsk.dwFlags And SKF_AVAILABLE) = SKF_AVAILABLE Then List1.AddString "固定キー機能あり" End If If (tsk.dwFlags And SKF_HOTKEYACTIVE) = SKF_HOTKEYACTIVE Then List1.AddString "ショートカットキーを使う" End If If (tsk.dwFlags And SKF_CONFIRMHOTKEY) = SKF_CONFIRMHOTKEY Then List1.AddString "ショートカットキーの有効時に確認" End If If (tsk.dwFlags And SKF_HOTKEYSOUND) = SKF_HOTKEYSOUND Then List1.AddString "ショートカットキーの有効時に音" End If If (tsk.dwFlags And SKF_INDICATOR) = SKF_INDICATOR Then List1.AddString "固定キー機能の状態を表示" End If If (tsk.dwFlags And SKF_AUDIBLEFEEDBACK) = SKF_AUDIBLEFEEDBACK Then List1.AddString "CtrlかAltかShiftを押したとき音" End If If (tsk.dwFlags And SKF_TRISTATE) = SKF_TRISTATE Then List1.AddString "CtrlかAltかShiftを2回押すとロック" End If If (tsk.dwFlags And SKF_TWOKEYSOFF) = SKF_TWOKEYSOFF Then List1.AddString "2つのキーを同時に押すと無効" End If If (tsk.dwFlags And SKF_LALTLOCKED) = SKF_LALTLOCKED Then List1.AddString "左Altキー ロック" End If If (tsk.dwFlags And SKF_LCTLLOCKED) = SKF_LCTLLOCKED Then List1.AddString "左Ctrlキー ロック" End If If (tsk.dwFlags And SKF_LSHIFTLOCKED) = SKF_LSHIFTLOCKED Then List1.AddString "左Shiftキー ロック" End If If (tsk.dwFlags And SKF_RALTLOCKED) = SKF_RALTLOCKED Then List1.AddString "右Altキー ロック" End If If (tsk.dwFlags And SKF_RCTLLOCKED) = SKF_RCTLLOCKED Then List1.AddString "右Ctrlキー ロック" End If If (tsk.dwFlags And SKF_RSHIFTLOCKED) = SKF_RSHIFTLOCKED Then List1.AddString "右Shiftキー ロック" End If If (tsk.dwFlags And SKF_LWINLOCKED) = SKF_LWINLOCKED Then List1.AddString "左Windowsキー ロック" End If If (tsk.dwFlags And SKF_RWINLOCKED) = SKF_RWINLOCKED Then List1.AddString "右Windowsキー ロック" End If End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End