Macro lösst sich selbst aus.

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von GimpTutWorks.

    Macro lösst sich selbst aus.

    Hey,
    Ich versuche momentan einen Keybinder für mich zu machen, jedoch wenn Zahlen in diesen Keybinder drinne vorkommen, dann lösst er sich selber erneu aus.

    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 Const Key_NONE As Integer = &H0
    3. Private Const WM_HOTKEY As Integer = &H312
    4. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    5. RegisterHotKey(Me.Handle, 1, Key_NONE, Keys.D1)
    6. Protected Overrides Sub WndProc(ByRef m As Message)
    7. If m.Msg = WM_HOTKEY Then
    8. Select Case m.WParam
    9. Case 1
    10. My.Computer.Keyboard.SendKeys("Test 123")
    11. End Select
    12. End If
    13. MyBase.WndProc(m)
    14. End Sub
    15. End Class
    SendKeys sendet an das Fenster, das den Fokus hat.
    Öffne ein Notepad und klick darauf, bevor Du Deinen Hotkey auslöst. :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!
    Im Augenblick sehe ich nichts, was irgendwie nach Makro aussieht.
    Kannst Du bitte mal Deinen aktuellen Code posten?
    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!
    Code ist im Anfangsstadium =D

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer, ByVal fsModifier As Integer, ByVal vk As Integer) As Integer
    3. Private Declare Sub UnregisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer)
    4. Private Const Key_NONE As Integer = &H0
    5. Private Const WM_HOTKEY As Integer = &H312
    6. Private Senden As String = "{t}"
    7. Private Player As String = "USER"
    8. Private Absenden As String = "{ENTER}"
    9. Protected Overrides Sub WndProc(ByRef m As Message)
    10. 'die messages auswerten
    11. If m.Msg = WM_HOTKEY Then
    12. 'hier wird entschieden welcher hotkey es war
    13. 'einfach die übergebene id auswerten
    14. Select Case m.WParam
    15. Case 1
    16. MessageBox.Show("Sie haben die Tab-Taste gedrückt!")
    17. Case 0
    18. My.Computer.Keyboard.SendKeys(Senden)
    19. My.Computer.Keyboard.SendKeys("RechungsbettRerag: 5.000,-$ /spay ")
    20. My.Computer.Keyboard.SendKeys(Player)
    21. My.Computer.Keyboard.SendKeys(" 5000")
    22. My.Computer.Keyboard.SendKeys(Absenden)
    23. End Select
    24. End If
    25. MyBase.WndProc(m)
    26. End Sub
    27. Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    28. 'die tab taste wieder freigeben
    29. UnregisterHotKey(Me.Handle, 1)
    30. UnregisterHotKey(Me.Handle, 2)
    31. End Sub
    32. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    33. 'die tab taste abfangen
    34. RegisterHotKey(Me.Handle, 1, Key_NONE, Keys.D1)
    35. RegisterHotKey(Me.Handle, 0, Key_NONE, Keys.D0)
    36. End Sub
    37. End Class

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

    Sieht blöd aus.
    Frau Google sagt, mit

    VB.NET-Quellcode

    1. Private Const MOD_NOREPEAT As Integer = &H4000
    2. ' und
    3. RegisterHotKey(Me.Handle, 0, Key_NONE Or MOD_NOREPEAT, Keys.D0)
    soll es gehen, tut es bei mir aber nicht. :S
    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!
    Ich hatte selber das Problem ^^
    Ist aber auch ganz einfach herauszufinden, warum das passiert ^^

    Du hast die Taste 1 belegt. und im SendKey kommt die 1 auch vor. Darauf reagiert der!

    Lösung(Achte auch die Kommentare)

    VB.NET-Quellcode

    1. Select Case m.WParam
    2. Case 1
    3. 'Die 1 Taste ausloggen(Unregister)
    4. My.Computer.Keyboard.SendKeys("Test 123")
    5. 'Hier die Taste wieder registrieren
    6. Case 2
    7. 'nächster Bind... etc.
    8. End Select


    MfG GTW