我正在为使用Windows Embedded Handheld 6.5 Classic的手持式条码扫描器编写一个程序。
我已经在我的表单上添加了一个 LinkLabel 并对其进行了编码,以便当您按 Shift 并单击链接时,它会弹出一个输入框供您输入密码(我最终会用实际表单替换它,但它暂时是一个输入框)
当我放开 shift 并开始使用物理密钥(它目前是一个 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
请有人帮忙吗?
您想恢复移位效果,但也许一个简单的解决方法可以做到这一点。我只是建议这种方法,因为Windows ce设备通常具有非标准(硬件)键盘,其驱动程序并不总是完美的。
由于您只期望数字,因此您可以尝试检测非数字字符并将其映射到键盘上的相应数字。