Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net使用asyncstate函数注册CTRL组合_Vb.net_Keyboard - Fatal编程技术网

Vb.net使用asyncstate函数注册CTRL组合

Vb.net使用asyncstate函数注册CTRL组合,vb.net,keyboard,Vb.net,Keyboard,我正在尝试制作一个完全由键盘控制的计算器 我在注册键盘上的击键时遇到了一些问题,但最终我使用了GetAsyncKeystate函数 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick For i = 1 To 255 result = 0 result = GetAsyncKeyState(i)

我正在尝试制作一个完全由键盘控制的计算器

我在注册键盘上的击键时遇到了一些问题,但最终我使用了GetAsyncKeystate函数

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

    For i = 1 To 255
        result = 0

        result = GetAsyncKeyState(i)

        If result = -32767 Then
            Select Case i
                Case Is = 96
                    Display.Text = Display.Text & "0"
                    ans = ans & "0"
                Case Is = 97
                    Display.Text = Display.Text & "1"
                    ans = ans & "1"
                Case Is = 98
                    Display.Text = Display.Text & "2"
                    ans = ans & "2"
                Case Is = 99
                    Display.Text = Display.Text & "3"
                    ans = ans & "3"
                Case Is = 100
                    Display.Text = Display.Text & "4"
                    ans = ans & "4"
                Case Is = 101
                    Display.Text = Display.Text & "5"
                    ans = ans & "5"
                Case Is = 102
                    Display.Text = Display.Text & "6"
                    ans = ans & "6"
                Case Is = 103
                    Display.Text = Display.Text & "7"
                    ans = ans & "7"
                Case Is = 104
                    Display.Text = Display.Text & "8"
                    ans = ans & "8"
                Case Is = 105
                    Display.Text = Display.Text & "9"
                    ans = ans & "9"
                Case Is = 106
                    Multiply()
                Case Is = 107
                    Add()
                Case Is = 110
                    Display.Text = Display.Text & ","
                    ans = ans & ","
                Case Is = 109
                    Substract()
                Case Is = 111
                    Devide()
                Case Is = 13 And ActionValue <> ""

                    Action()

                    Display.Text = ans2
                    Display.Text = Display.Text & Environment.NewLine

                    ans = ans2
                    ans2 = ""

            End Select

        End If

    Next i

End Sub
Private Sub Timer1\u Tick(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理Timer1.Tick
对于i=1到255
结果=0
结果=GetAsyncKeyState(i)
如果结果=-32767,则
选择案例一
病例为96例
Display.Text=Display.Text&“0”
ans=ans&“0”
情况是=97
Display.Text=Display.Text&“1”
ans=ans&“1”
情况是=98
Display.Text=Display.Text&“2”
ans=ans&“2”
情况是=99
Display.Text=Display.Text&“3”
ans=ans&“3”
情况是=100
Display.Text=Display.Text&“4”
ans=ans&“4”
情况是=101
Display.Text=Display.Text&“5”
ans=ans&“5”
情况是=102
Display.Text=Display.Text&“6”
ans=ans&“6”
案例Is=103
Display.Text=Display.Text&“7”
ans=ans&“7”
案例Is=104
Display.Text=Display.Text&“8”
ans=ans&“8”
案例Is=105
Display.Text=Display.Text&“9”
ans=ans&“9”
情况是=106
乘
案例Is=107
添加()
情况是=110
Display.Text=Display.Text&“
ans=ans&“
案例Is=109
减()
情况是=111
德维德()
大小写为=13且ActionValue“”
行动()
Display.Text=ans2
Display.Text=Display.Text&Environment.NewLine
ans=ans2
ans2=“”
结束选择
如果结束
接下来我
端接头
现在我不知道应该如何注册Ctrl组合(比如Ctrl+NUM-LOCK)
顺便说一句,我不习惯GetsAsyncKeyState函数

您首先需要检查是否在开始时按下了CTRL键或任何其他修改键,如Alt或其他任何键。(有关钥匙代码,请参阅)。定义变量,如

Dim isCTRLPressed as Boolean = (GetAsyncKeyState(&HA2) < 0)

如果你的意思是别的,你可以在你的帖子上再详细说明一下。您的代码也相当低效,因为您强制检查每个勾号上的每个键状态,看它是否被实际使用。

是的,我从另一篇stackoverflow文章中得到了这一点。。。不管怎样,你的代码是有效的。。。与此同时,我发现CTRL键覆盖了键的功能,使它除了我需要它做什么之外什么都不做。糟糕的编码ftw!
If isCTRLPressed Then
  DoThis()
Else
  DoThat()
End If