RegisterHotkey Ziffernblock abfragen, wenn Numlock aus ist

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Volker Bunge.

    RegisterHotkey Ziffernblock abfragen, wenn Numlock aus ist

    Hallo zusammen,

    wie kann ich den Ziffernblock kpl. abfragen, wenn die Numlock aus ist?

    Mein kleines Hilfsprogramm soll nur dann reagieren, wenn die Numlock-Taste aus ist. Also habe ich mir mein altes Hotkeyprg. geschnappt und folgendes eingefügt

    VB.NET-Quellcode

    1. RegisterHotKey(Me.Handle, 0, KeyModifier.Keine, Keys.Insert) ' 0
    2. RegisterHotKey(Me.Handle, 1, KeyModifier.Keine, Keys.End) ' 1
    3. RegisterHotKey(Me.Handle, 2, KeyModifier.Keine, Keys.Down) ' 2
    4. RegisterHotKey(Me.Handle, 3, KeyModifier.Keine, Keys.PageDown) ' 3
    5. RegisterHotKey(Me.Handle, 4, KeyModifier.Keine, Keys.Left) ' 4
    6. RegisterHotKey(Me.Handle, 5, KeyModifier.Keine, Keys.NumPad5) ' 5
    7. RegisterHotKey(Me.Handle, 6, KeyModifier.Keine, Keys.Right) ' 6
    8. RegisterHotKey(Me.Handle, 7, KeyModifier.Keine, Keys.Home) ' 7
    9. RegisterHotKey(Me.Handle, 8, KeyModifier.Keine, Keys.Up) ' 8
    10. RegisterHotKey(Me.Handle, 9, KeyModifier.Keine, Keys.PageUp) ' 9
    11. RegisterHotKey(Me.Handle, 10, KeyModifier.Keine, Keys.Divide) ' /
    12. RegisterHotKey(Me.Handle, 11, KeyModifier.Keine, Keys.Multiply) ' *
    13. RegisterHotKey(Me.Handle, 12, KeyModifier.Keine, Keys.OemMinus) ' -
    14. RegisterHotKey(Me.Handle, 13, KeyModifier.Keine, Keys.Add) ' +
    15. RegisterHotKey(Me.Handle, 14, KeyModifier.Keine, Keys.Enter) ' Enter
    16. RegisterHotKey(Me.Handle, 15, KeyModifier.Keine, Keys.Delete) ' Entferntaste


    Leider kann ich nicht zwischen den Ziffernblocktasten und den links daneben liegenden Tasten unterscheiden.

    Mein Programm sollte eigentlich nur auf die Tasten auf dem Ziffernblock reagieren.

    Gibt es da eine Möglichkeit, nur genau diese Tasten abzufragen? Es muss auch nicht unbedingt RegisterHotkey sein.

    Mein Programm soll später im Hintergrund laufen, und nur dann reagieren, wenn die Numlock - Taste aus ist. Wäre schön, wenn es da eine Möglichkeit gibt.

    Gruß

    Volker

    CodeTags gesetzt ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Hallo ErfinderDesRades,

    das mit der 5 ist leider auch noch so ein Thema. Da diese Taste ja keine Doppelfunktion hat, habe ich erst einmal so stehen lassen (funktioniert natürlich nicht)

    Die Taste 6 kann ich so nicht verwenden, da diese nur NumPad6 ist, wenn der Nummernblock an ist. Ich möchte aber, dass mein Programm dann reagiert, wenn der Nummernblock aus ist.

    Da diese Tasten ja fast alle eine doppelte Funktion haben würde ich gerne versuchen diese Doppelte Funktion abzufangen.

    Was richtig cool wäre, wenn ich wirklich diese Taste abfragen könnte und nicht das Pardon dazu auch darauf reagiert.

    Wenn ich das hier mal teste

    VB.NET-Quellcode

    1. Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown
    2. Label1.Text = e.KeyCode
    3. End Sub


    dann bekomme ich bei Taste "/" 111 (Nummernblock) und 55 über der Sieben (Tastaturenbereich) raus. Somit könnte ich die Tasten 5, /, *, -, + schon einmal genau zuortnen.
    Die anderen Tasten würden leider noch immer nicht eindeutig funktionieren.

    Gruß

    Volker

    CodeTags gesetzt ~VaporiZed

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“ ()

    Hallo INOPIAE,

    das sieht schon einmal ganz gut aus.

    Werde das morgen früh mal versuchen, ob man anstatt keys.irgendwas auch den Wert eintragen kann. Wenn das geht, dann sieht es wohl danach aus, das man jede Taste korrekt identifizieren kann.

    Ich werde höchst wahrscheinlich die Numlocktaste eh auswerten müssen. Wenn Sie an ist, dann werde ich ggf. die passende Taste drücken um so den gewünschten Wert rauszubekommen.

    Melde mich morgen noch mal, ob es geklappt hat.

    Gruß
    Volker
    Hallo zusammen,

    habe jetzt gerade mal ein bisschen probiert.

    Also: Numpad6 funktioniert leider nur, wenn die Numlock an ist. Right würde funktionieren, wenn NumLlock aus ist.

    Wenn ich also wie oben schon geschrieben den Code verwende, dann kann ich leider auch über die anderen Tasten die aktuelle Rückmeldung in meinem Programm erzeugen

    Wenn ich dann mal mit einer Textbox und KeyDown arbeite komme ich auf folgende Rückgabewerte

    NumLock aus
    144 111 106 109
    036 038 033 107
    037 012 039
    035 040 034 013
    045 046

    NumLock an
    144 111 106 109
    103 104 105 107
    100 101 102
    097 098 099 013
    096 110

    Wenn ich die Pardontasten drücke, bekomme ich auch die gleichen Werten zurück wie auf dem Nummernblock. Also scheint leider mein Vorhaben so nicht zu klappen.

    Gibt es ggf. noch andere Möglichkeiten, die Tasten zu eindeutig zu identifizieren bzw. Systemweit abzufangen?

    Gruß

    Volker
    Hallo zusammen,

    habe gerade noch einmal alle e. Möglichkeiten ausprobiert

    VB.NET-Quellcode

    1. Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown
    2. Label1.Text = e.KeyCode & " " & e.KeyData & " " & e.KeyValue & " " & e.Modifiers & " " & e.GetHashCode
    3. End Sub

    Mit GetHashCode hatte ich gedacht, meiner Lösung näher gekommen zu sein. Aber leider zu früh gefreut, denn beim zweiten Drücken der gleichen Taste kam auch schon ein anderer Wert heraus.

    Oder gibt es vielleicht hierüber eine Möglichkeit, auf die gedrückte Taste eindeutig zu kommen?

    Gruß

    Volker

    CodeTags gesetzt ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()