desmoloch Geschrieben 9. März 2004 Geschrieben 9. März 2004 hi hab mal wieder en Problem würde gerne die Zahlen auf der Tastatur bei gedrückter Shift Taste umwandeln. Hab dafür mal die "ToAscii" funktion aus der user32.dll benutzt, leider funktÃoniert das umwandeln nur dann wenn mein programm im Vordergrund ist. In einem anderen Fenster wird dann trotzdem aus ! -> 1. Gibt es noch eine andere Möglichkeit (ausser von Hand umzuwandeln) ? mfg Desmo Zitieren
Gast Geschrieben 9. März 2004 Geschrieben 9. März 2004 Zahlen werden doch automatisch bei gedrückster Shifttaste umgewandelt, oder verstehe ich da was falsch? Zitieren
desmoloch Geschrieben 9. März 2004 Autor Geschrieben 9. März 2004 hmm ok ich muss es ausführlicher angehen ich habe mein KeyboardHook das mir jede Tastatureingabe mitgibt. Das heisst ich bekomm erst SHIFT und dann 1. So daraus soll nun aber ! werden es gibt eine ToAscii Funktion, die funktioniert aber irgendwie leider nicht klar kann ich abfangen wenn shift wieder losgelassen wird. Aber dann müsste ich sagen bei SHIFT + 1 = ! usw... Dann würde das aber bei neuem Tastaturlayout nicht mehr funktionieren! Zitieren
Gast Geschrieben 9. März 2004 Geschrieben 9. März 2004 Wenn es Dir nur um bestimmte Bereiche geht (sprich nur Zahlen, oder nur Buchstaben) kannst Du ja den Wert mit asc(Char) bestimmen und dann eben den Offset addieren/subtrahieren. [EDIT]:Eine ToAscii-Funktion kenne ich bei VB6 zumindest nicht. Zitieren
desmoloch Geschrieben 9. März 2004 Autor Geschrieben 9. März 2004 Private Declare Function ToAscii Lib "user32" (ByVal uVirtKey As Long, _ ByVal uScanCode As Long, lpbKeyState As Byte, _ lpwTransKey As Long, ByVal fuState As Long) As Long die da ok danke ich versuch das mal eben! Zitieren
desmoloch Geschrieben 9. März 2004 Autor Geschrieben 9. März 2004 hmm blöd kann meinen beitrag nicht mehr editieren... alsoooo ich mache: Chr(keyascii - 16) keyascii ist sagen wir mal die 49 (1) und daraus macht er dann die 33 (!) da ist aber dann das Problem das zum beispiel bei der Zahl 3 (ascii 51), # anstatt § kommt! bei der ami tastatur ist das wohl so, bei der deutschen aber eben nicht //EDIT: aber ich sehe eben das es ja für jedes tastatur layout einen scancode gibt! das heisst ich müsste nur den scancode "zurückrechnen". Hast du eine ahnung wie ich den scancode benutzen kann? Zitieren
Gast Geschrieben 9. März 2004 Geschrieben 9. März 2004 Private Sub Text1_KeyPress(KeyAscii As Integer) KeyAscii = KeyAscii - 16 End Sub Diese Funktion wandelt (wenn eine Zahl eingegeben wurde) die Eingabe gemäss des installierten ASCII-Zeichensatzes in [sHIFT]+Zahleingabe um. [EDIT]: Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) lblTasteWert.Caption = Chr(KeyCode) lblScanWert.Caption = CStr(KeyCode) lblShiftWert.Caption = CStr(Shift) End Sub Zitieren
desmoloch Geschrieben 9. März 2004 Autor Geschrieben 9. März 2004 Original geschrieben von LoneGunman Private Sub Text1_KeyPress(KeyAscii As Integer) KeyAscii = KeyAscii - 16 End Sub Diese Funktion wandelt (wenn eine Zahl eingegeben wurde) die Eingabe gemäss des installierten ASCII-Zeichensatzes in [sHIFT]+Zahleingabe um. das stimmt, es macht aber aus 3 + SHIFT -> # ! Original geschrieben von LoneGunman Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) lblTasteWert.Caption = Chr(KeyCode) lblScanWert.Caption = CStr(KeyCode) lblShiftWert.Caption = CStr(Shift) End Sub wie gesagt ich benutze kein keydown, sondern einen Keyboardhook der mir alle tasten nacheinander liefert! zum scancode: der scancode ist tasturlayout abhängig. Das heisst ich kann zum Virtualkeycode von "1" zum Beispiel den Scancode auslesen (HEX: 02). Das "!" hat jetzt auch den Scancode 02 und ich müsste nur noch den "anderen" wert für den scancode auslesen. Das müsste dann auch Tastaturlayout unabhängig klappen Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.