0

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

誰か助けてください。

4

1 に答える 1

0

シフト効果を元に戻したいと思っていることは知っていますが、簡単な回避策でそれができるかもしれません。私がこのアプローチを提案しているのは、Windows CE デバイスには非標準 (ハードウェア) キーボードがあり、そのドライバーが常に完璧であるとは限らないためです。

数字だけを期待しているので、数字以外の文字を検出して、キーボードの対応する数字にマップすることができます。

于 2016-01-16T01:02:33.280 に答える