在Windows Embedded Handheld 6.5 Classic中按下Shift键

时间:2016-01-14 17:00:30

标签: vb.net compact-framework pocketpc windows-embedded

我正在为使用Windows Embedded Handheld 6.5 Classic的手持条码扫描器编写程序。

我已经在我的表单上添加了一个LinkLabel并对其进行了编码,这样当你按下Shift键并点击链接时,它会弹出一个输入框,供你输入密码(我最终会用实际的表格替换它)它暂时是一个InputBox)

当我放开班次并开始使用物理键输入我的密码(它当前是一个4位数字)时,它会将第一个字符视为我仍然保持移位。

在代码中是否有任何方法可以将其还原以便不按下shift? 我试图使用keybd_event api,它似乎无法正常工作

这就是我尝试过但我似乎找不到任何其他东西可以尝试。

Public Declare Sub keybd_event Lib "coredll.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)

Private Sub lblTitle_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lblTitle.Click
    Try
        If GetKeyState(Keys.ShiftKey) = 0 Then Exit Sub

        Dim StaffPassword as String = "1234"
        Dim _Continue As Boolean = False

        keybd_event(VK_Shift, 0, KEYEVENTF_KEYDOWN, 0)
        keybd_event(VK_Shift, 0, KEYEVENTF_KEYUP, 0)

        Do Until _Continue
            Dim _Password As String = InputBox("Please enter the staff password to go into the Admin Screen.", "Enter Password", "", True)

            If Not _Password = StaffPassword Then
                Dim _Ans As MsgBoxResult = MsgBox("You entered an incorrect password!" & vbNewLine & vbNewLine & "Would you like to try again?", MsgBoxStyle.Exclamation + MsgBoxStyle.YesNo, "Incorrect Password")

                If _Ans = MsgBoxResult.No Then Exit Sub
            Else
                _Continue = True
            End If
        Loop

        frmAdmin.ShowDialog()
    Catch ex As Exception
        MsgBox(ex.ToString, MsgBoxStyle.Critical, "Error")
    End Try
End Sub

请有人帮忙吗?

1 个答案:

答案 0 :(得分:0)

我知道你想要恢复移位效果,但也许一个简单的解决方法可以做到这一点。我只是建议这种方法,因为windows ce设备通常有非标准(硬件)键盘,其驱动程序并不总是完美的。

由于您只想要数字,您可以尝试检测非数字字符并将其映射到键盘上的相应数字。