Mit My.settings die Keys Senden.

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    Mit My.settings die Keys Senden.

    Ich habe hier eine Funktion, mit welcher man per Knopfdruck einen Befehl im Programm ausführen kann.
    Die Methode sieht folgendermaßen aus:

    VB.NET-Quellcode

    1. #Region "Global"
    2. ' Was brauche ich für globale Hotkeys?
    3. '- Die unten aufgeführten Deklarationen
    4. '- Im Load Event der Sub, der die Hotkeys registriert!
    5. '- WndProc Sub, der die Messages abfängt
    6. Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer, ByVal fsModifier As Integer, ByVal vk As Integer) As Integer
    7. Private Const Key_NONE As Integer = &H0
    8. Private Const WM_HOTKEY As Integer = &H312
    9. Private Const MOD_ALT = &H1
    10. Private Const MOD_CONTROL = &H2
    11. Private Const MOD_SHIFT = &H4
    12. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    13. RegisterHotKey(Me.Handle, 1, Key_NONE, Keys.F2)
    14. RegisterHotKey(Me.Handle, 2, Key_NONE, Keys.F3)
    15. RegisterHotKey(Me.Handle, 3, Key_NONE, Keys.F4)
    16. RegisterHotKey(Me.Handle, 4, Key_NONE, Keys.F5)
    17. End Sub
    18. Protected Overrides Sub WndProc(ByRef m As Message)
    19. If m.Msg = WM_HOTKEY Then
    20. Select Case m.WParam
    21. Case 1
    22. label1.text = "Hallo"
    23. Case 2
    24. label2.text = "Hallo"
    25. Case 3
    26. label3.text = "Hallo VB.net Paradise"
    27. Case 4
    28. msgbox("Hallo")
    29. End Select
    30. End If
    31. MyBase.WndProc(m)
    32. End Sub
    33. #End Region



    Nur möchte ich das ganze mit Benutzerdefinierten Keys machen, sprich ich möchte mit einer My.settings Einstellung den Key angeben welcher gewünscht ist. In einer ComboBox kann man auswählen welchen Knopf den Effekt auslösen soll.

    Habe es dann folgendermaßen versucht umzusetzen :


    VB.NET-Quellcode

    1. #Region "Global"
    2. ' Was brauche ich für globale Hotkeys?
    3. '- Die unten aufgeführten Deklarationen
    4. '- Im Load Event der Sub, der die Hotkeys registriert!
    5. '- WndProc Sub, der die Messages abfängt
    6. Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer, ByVal fsModifier As Integer, ByVal vk As Integer) As Integer
    7. Private Const Key_NONE As Integer = &H0
    8. Private Const WM_HOTKEY As Integer = &H312
    9. Private Const MOD_ALT = &H1
    10. Private Const MOD_CONTROL = &H2
    11. Private Const MOD_SHIFT = &H4
    12. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    13. RegisterHotKey(Me.Handle, 1, Key_NONE, Keys = My.settings.A1)
    14. RegisterHotKey(Me.Handle, 2, Key_NONE, Keys = My.settings.A2)
    15. RegisterHotKey(Me.Handle, 3, Key_NONE, Keys = My.settings.A3)
    16. RegisterHotKey(Me.Handle, 4, Key_NONE, Keys = My.settings.A4) '
    17. End Sub
    18. Protected Overrides Sub WndProc(ByRef m As Message)
    19. If m.Msg = WM_HOTKEY Then
    20. Select Case m.WParam
    21. Case 1
    22. label1.text = "Hallo"
    23. Case 2
    24. label2.text = "Hallo"
    25. Case 3
    26. label3.text = "Hallo VB.net Paradise"
    27. Case 4
    28. msgbox("Hallo")
    29. End Select
    30. End If
    31. MyBase.WndProc(m)
    32. End Sub
    33. #End Region


    Leider hat es so nicht funktioniert. Hat jemand eine Idee wie das gehen könnte?
    @Timm3D Nimm eine Textbox, in die der User seinen HotKey eingeben kann.
    Zeige den Key an und bei Bestätigung wird er registriert.
    Natürlich muss noch ausgewählt werden, für welche Funktion der sin soll.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Timm3D schrieb:

    Ich kann bzw. muss
    Ja und?
    Wenn der User seinen Key in der TextBox eingegeben hat, legst Du ihn in einem Setting ab.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Timm3D Nö, hab ich noch nicht gemacht.
    Ist Dein Trainer es Wert, das mit ihm zu tun?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!