Getkeystate没有返回正确的值?

时间:2014-05-26 17:45:33

标签: excel vba

伙计们真的无法绕过getkeyboardstate()函数和getkeystate()函数

我想判断是否按下了箭头键,然后是否退出。

Public Declare PtrSafe Function GetKeyState Lib "user32" (pbKeyState As Byte) As Long

我使用上面的内容,然后在子中使用以下内容;

GetKeyState(44)

我正在寻找是否按下了版画屏幕,但它似乎没有返回0

我做错了什么?有人知道吗?

1 个答案:

答案 0 :(得分:0)

这似乎不是你的问题。

如果我这样做:

Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Sub luxation()
For j = 1 To 300
    For i = 1 To 100000
        If (GetAsyncKeyState(vbKeyA)) Then
            MsgBox "Got an a"
            Exit Sub
        End If
        If (GetAsyncKeyState(vbKeyPrint)) Then
            MsgBox "Got PrintScreen"
            Exit Sub
        End If
        If (GetAsyncKeyState(vbKeySnapshot)) Then
            MsgBox "Got snap"
            Exit Sub
        End If
    Next i
Next j
MsgBox "Failed"
End Sub

在我年迈的戴尔身上,如果我没有按键,它会循环约30秒。

如果我触摸 A 键,我会收到相应的消息。

如果我触摸 PrntScr 键,我会收到快照消息,而不是 PrintScreen 消息。

至少在我的戴尔上,我需要使用 vbKeySnapshot 来捕获 PrntScr 键。