Keybinder

  • VB.NET

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

    Hey,

    ich möchte einen Keybinder für Spiele entwickeln und mach das wie folgt:

    Habe 1 Textbox und eine Combobox in der Combobox kann der User sich eine Taste aussuchen
    auf die der Keybinder dann reagieren soll und dann das eingeben soll was in der Textbox1 steht.
    Wie mache ich das am geschicktesten das ich mir viel Code spare da ich mehrere Textboxen und Comboboxen
    besitze.

    Hat da jemand eine Idee? :)
    Folgender Code habe ich momentan:



    VB.NET-Quellcode

    1. Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer, ByVal fsModifier As Integer, ByVal vk As Integer) As Integer
    2. Private Declare Sub UnregisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer)
    3. Private Const Key_NONE As Integer = &H0
    4. Private Const WM_HOTKEY As Integer = &H312
    5. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    6. End Sub
    7. Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
    8. If CheckBox1.Checked = True Then
    9. RegisterHotKey(Me.Handle, 1, Key_NONE, Keys. 'statt keys. muss der Inhalt der Combobox rein
    10. Else
    11. UnregisterHotKey(Me.Handle, 1)
    12. End If
    13. 'Das senden des Textes muss hier nicht rein da ja wichtig ist wie ich das hier handle
    Also versteh ich das jetzt richtig, dass du nicht für jede CB das machen willst:

    VB.NET-Quellcode

    1. If CheckBox1.Checked = True Then
    2. RegisterHotKey(Me.Handle, 1, Key_NONE, Keys. 'statt keys. muss der Inhalt der Combobox rein
    3. Else
    4. UnregisterHotKey(Me.Handle, 1)
    5. End If


    Sitzen die CBs in ner GroupBox oder so?
    Dann könntest du so abfragen:

    VB.NET-Quellcode

    1. for each CB as CheckBox in CBGroup.controls
    2. if cb.checked = true
    3. 'hier nun das RegisterHotKey
    4. else
    5. 'und hier UnregisterHotKey
    6. end if
    7. next

    Don_Batisto schrieb:

    RegisterHotKey(Me.Handle, 1, Key_NONE, Keys.

    Don_Batisto schrieb:

    Also versteh ich das jetzt richtig, dass du nicht für jede CB das machen willst:

    VB.NET-Quellcode

    1. If CheckBox1.Checked = True Then
    2. RegisterHotKey(Me.Handle, 1, Key_NONE, Keys. 'statt keys. muss der Inhalt der Combobox rein
    3. Else
    4. UnregisterHotKey(Me.Handle, 1)
    5. End If


    Sitzen die CBs in ner GroupBox oder so?
    Dann könntest du so abfragen:

    VB.NET-Quellcode

    1. for each CB as CheckBox in CBGroup.controls
    2. if cb.checked = true
    3. 'hier nun das RegisterHotKey
    4. else
    5. 'und hier UnregisterHotKey
    6. end if
    7. next




    Soll das dann so aussehen?


    VB.NET-Quellcode

    1. If CheckBox1.Checked = True Then
    2. For Each CB As CheckBox In CBGroup.controls
    3. If CB.Checked = True Then
    4. RegisterHotKey(Me.Handle, 1, Key_NONE, CB.Text)
    5. MsgBox("DER TEST")
    6. Else
    7. UnregisterHotKey(Me.Handle, 1)
    8. End If
    9. Next
    10. End If
    11. End Sub

    TheFlash schrieb:

    Soll das dann so aussehen?
    Willst Du permanent durch Klicken auf ein Control einen HotKey ändern? :S
    Dieser HotKey gilt systemweit, unabhängig, ob Dein Programm den Fokus hat.
    Am Besten, Du spielst mal mit dem Original Code und keine zusätzliche Zeile von Dir.
    Wenn Du das verstanden hast, solltest Du diesen Thread zumachen können. :D
    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!

    RodFromGermany schrieb:

    TheFlash schrieb:

    Soll das dann so aussehen?
    Willst Du permanent durch Klicken auf ein Control einen HotKey ändern? :S
    Dieser HotKey gilt systemweit, unabhängig, ob Dein Programm den Fokus hat.
    Am Besten, Du spielst mal mit dem Original Code und keine zusätzliche Zeile von Dir.
    Wenn Du das verstanden hast, solltest Du diesen Thread zumachen können. :D
    Das habe ich eigentlich schon verstanden es geht ja bloß darum das ich in einen Combobox Buchstaben stehen
    habe, dann wähle ich einen Buchstaben aus und aktiviere die Checkbox.
    Dann soll der Text erscheinen wenn ich auf den ausgewählten Buchstaben drücke.