Shift Keys Stays Pressed in Windows Embedded Handheld 6.5 Classic

177 Views Asked by At

I'm writing a program for a handheld barcode scanner which uses Windows Embedded Handheld 6.5 Classic.

I have added a LinkLabel on my form and have coded it so that when you press Shift and click the link it brings up an input box for you to enter a password (I'll be replacing this with an actual form eventually but it is an InputBox for the time being)

When I let go of shift and begin to type my password using the physical keys (it is currently a 4 digit number) it treats the first character as though I am still holding shift.

Is there any way, in code, to revert it back so that shift isn't pressed? I have tried to use the keybd_event api and it doesn't seem to work

This is what I've tried but I can't seem to find anything else to try.

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

Please could someone help?

1

There are 1 best solutions below

0
Filipe Pinto On

I know you want to revert the shift effect but maybe a simple workaround could do it. I'm only suggesting this approach because windows ce devices often have non-standard (hardware) keyboards whose drivers are not always perfect.

Since you are only expecting numbers you could try to detect a non-number char and map it to the corresponding number on the keyboard.