2

VBA で Windows API 関数を使用するのは初めてで、keys(0) が正確に何を意味するのかわかりません。また、括弧/括弧で囲まれていないため、どのように機能するかわかりません。前もって感謝します!

Private Declare PtrSafe Function GetKeyboardState Lib "user32" _
(pbKeyState As Byte) As Long

Property Get Value() As Boolean

    Dim keys(0 To 255) As Byte
    GetKeyboardState keys(0) '<< Can someone explain what this is doing?
    Value = keys(VK_NUMLOCK)

End Property
4

1 に答える 1

4

キーの状態の配列を取得するためにGetKeyboardStateが使用されることを既にご存知だと思います。

keys(0) を渡すと、基本的に配列のメモリ位置が Win API 関数に提供されます。これにより、配列は参照によって関数に渡され、渡す配列にはデータが入力されます。

これは、リンクされたページからコピーされた使用例です。これは、コメントがたくさんあるという理由だけで提供しています。

' Display the key status of the Enter and Backspace keys
' Enter's virtual key code = 13; Backspace's virtual key code = 8
Dim keystat(0 To 255) As Byte ' receives key status information for all keys
Dim retval As Long ' return value of function

retval = GetKeyboardState(keystat(0)) ' In VB, the array is passed by referencing element #0.
' Display info about Enter
If (keystat(13) And &H01) = &H01 Then Debug.Print "Enter is being pressed."
If (keystat(13) And &H80) = &H80 Then Debug.Print "Enter is toggled."
' Display info about Backspace
If (keystat(8) And &H01) = &H01 Then Debug.Print "Backspace is being pressed."
If (keystat(8) And &H80) = &H80 Then Debug.Print "Backspace is toggled.
于 2012-10-29T19:12:31.657 に答える