Taste durch Mausklick ersetzen?

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von BiedermannS.

    Taste durch Mausklick ersetzen?

    Hallo liebe Community,

    ich arbeite seit kurzem in einer neuen Firma als CAD-Programmierer.

    Bei unserem CAD-Programm muss man alle Eingaben mit der linken Maustaste bestätigen, was jedoch auf dauer etwas nervt (linke Hand = Shortcuts; rechte Hand = Koordinateneingabe) wenn man immer umgreifen muss.

    Darum wollte ich fragen ob es möglich ist, die "Enter-Taste" des Numpads über einen Tastatur-Hook durch einen Links-Klick mitten auf dem Bildschirm zu ersetzen. Die normale "Enter-Taste" sollte natürlich weiterhin normal funktionieren.

    Ich hoffe Ihr könnt mir weiterhelfen.

    Mit freundlichen Grüßen
    Steve
    SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

    Weil einfach, einfach zu einfach ist! :D
    Bei unserem CAD-Programm muss man alle Eingaben mit der linken Maustaste bestätigen, was jedoch auf dauer etwas nervt (linke Hand = Shortcuts; rechte Hand = Koordinateneingabe) wenn man immer umgreifen muss.


    Maustasten vertauschen: vbarchiv.net/tipps/tipp_1609-maustasten-vertauschen.html
    API Deklarationen für NET findest auf pinvoke.net

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

    Guten Morgen,

    Das ist leider nicht ganz das was ich suche:

    SystemUnknow schrieb:

    Ich habe es warscheinlich zu ungenau erklärt.

    Ich möchte die Enter-Taste am NumPad sperren, (Nur die am NumPad) damit ich mit dieser Taste einen Klick ausführen kann, ohne die Funktion aufzurufen die normalerweise auf Enter liegt.

    Die normale Enter-Taste soll dadurch aber nicht beeinflusst werden.

    Den Code für einen Mausklick habe ich bereits gefunden.

    Mfg
    SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

    Weil einfach, einfach zu einfach ist! :D
    Habs schon gelöst.

    Erst mal vielen Dank an mikeb69, für das Tutorial [VB.NET] Tastatur Systemweit abfangen (Tastatur Hook). Das hat mir sehr weiter geholfen.

    Der rest des Sourcecodes ist selbst zusammengestellt bzw. aus der MSDN entnommen.

    Hier mein Sourcecode:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. 'Deklarationen zum Abfangen bestimmter Tasten
    3. Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer, ByVal fsModifier As Integer, ByVal vk As Integer) As Integer
    4. Private Declare Sub UnregisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer)
    5. Private Const Key_NONE As Integer = &H0
    6. Private Const WM_HOTKEY As Integer = &H312
    7. 'Deklarationen um einen Mausklick zu simulieren
    8. Public Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal _
    9. dwFlags As Integer, ByVal dx As Integer, _
    10. ByVal dy As Integer, ByVal cButtons As Integer, ByVal _
    11. dwExtraInfo As Integer)
    12. Private Const MOUSEEVENTF_LEFTDOWN = &H2
    13. Private Const MOUSEEVENTF_LEFTUP = &H4
    14. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    15. 'Alle Hotkeys freigeben, falls einer nicht ordnungsgemäß freigegeben wurde
    16. UnregisterHotKey(Me.Handle, 1)
    17. UnregisterHotKey(Me.Handle, 2)
    18. UnregisterHotKey(Me.Handle, 3)
    19. 'Die Hotkeys zum ein und ausschalten des Tools
    20. RegisterHotKey(Me.Handle, 2, Key_NONE, Keys.PageUp)
    21. RegisterHotKey(Me.Handle, 3, Key_NONE, Keys.PageDown)
    22. End Sub
    23. Protected Overrides Sub WndProc(ByRef m As Message)
    24. 'die messages auswerten
    25. If m.Msg = WM_HOTKEY Then
    26. 'hier wird entschieden welcher hotkey es war
    27. 'einfach die übergebene id auswerten
    28. Select Case m.WParam
    29. Case 1
    30. 'Führt einen Mausklick aus
    31. mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
    32. mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
    33. Case 2
    34. 'Wenn das Tool eingeschaltet wird, werden weitere Hotkeys registriert
    35. 'Die Leertaste soll später einen Mausklick ausführen
    36. RegisterHotKey(Me.Handle, 1, Key_NONE, Keys.Space)
    37. 'Färbt die Form Grün, um zu signalisieren dass das Tool eingeschaltet ist
    38. Me.BackColor = Color.Lime
    39. Case 3
    40. 'beim Ausschalten des Tools werden die Hotkeys von oben wieder freigegeben
    41. UnregisterHotKey(Me.Handle, 1)
    42. 'Die Farbe der Form wechselt wieder auf Rot
    43. Me.BackColor = Color.Red
    44. End Select
    45. End If
    46. MyBase.WndProc(m)
    47. End Sub
    48. Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    49. 'Alle Hotkeys wieder freigeben
    50. UnregisterHotKey(Me.Handle, 1)
    51. UnregisterHotKey(Me.Handle, 2)
    52. UnregisterHotKey(Me.Handle, 3)
    53. End Sub
    54. End Class


    Ich hoffe ich kann ein paar Leuten damit weiterhelfen.

    Mit freundlichen Grüßen
    Steve
    SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

    Weil einfach, einfach zu einfach ist! :D