Mausklicks außerhalb einer Windows Forms App ausführen

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von kwon.

    Mausklicks außerhalb einer Windows Forms App ausführen

    Hallo, liebe Profis!!

    Ich möchte eine Windows Forms App erstellen, mit der man die Maus steuern kann, d.h. ein paar Klicks auf Schaltflächen einer Videoschnitt-Software (außerhalb der Form!) ausführen kann.

    Der erste Klick geht auf das Taskleisten-Kästchen der Software - um diese in den Vordergrund zu holen.
    Der zweite Klick soll auf eine Schaltfläche der Software gehen.

    Das Positionieren des Zeigers funktioniert - der linke Mausklick nicht...
    Allerdings sehe ich beim Zeiger, wenn der Klick ausgeführt wird, einmal kurz die Kreis-Animation des Zeigers...

    Habe den Code mit meinem Versuch angehängt...

    Ich würde mich sehr freuen, wenn ihr mir sagen könntet, was ich falsch mache, bzw. was ich besser machen könnte...

    Vielen Dank für die Hilfe im Voraus!!

    Viele Grüße,

    kwon

    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices
    2. Imports System.Threading
    3. Public Class Form1
    4. <DllImport("user32.dll")>
    5. Private Shared Sub mouse_event(dwFlags As UInteger, dx As UInteger, dy As UInteger, dwData As UInteger, dwExtraInfo As Integer)
    6. End Sub
    7. Public Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal dwData As Long, ByVal dwExtraInfo As Long)
    8. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    9. 'Koordinaten für Video Easy Fenster aktivieren
    10. Mk(830, 1055)
    11. Thread.Sleep(2000)
    12. 'Koordinaten für Video Easy Aufnahme beenden
    13. Mk(720, 590)
    14. End Sub
    15. Function Mk(Xpos As Integer, Ypos As Integer)
    16. 'Mauszeiger positionieren
    17. System.Windows.Forms.Cursor.Position = New Point(Xpos, Ypos)
    18. Timer1.Enabled = True
    19. Timer1.Start()
    20. Timer1.Stop()
    21. Timer1.Enabled = False
    22. End Function
    23. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    24. Const MOUSEEVENT_LEFTDOWN As UInteger = &H2
    25. Const MOUSEEVENT_LEFTUP As UInteger = &H4
    26. mouse_event(MOUSEEVENT_LEFTDOWN, 0, 0, 0, 0)
    27. Thread.Sleep(100)
    28. mouse_event(MOUSEEVENT_LEFTUP, 0, 0, 0, 0)
    29. End Sub
    30. End Class
    @kwon warum hast Du denn da zwei disjunkte Deklarationen von mouse_event in Deinem Code?
    Lösch die zweite.
    ====
    Probier mal dies:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices
    2. Imports System.Threading
    3. Public Class Form1
    4. <DllImport("user32.dll")>
    5. Private Shared Sub mouse_event(dwFlags As UInteger, dx As Integer, dy As Integer, dwData As UInteger, dwExtraInfo As Integer)
    6. End Sub
    7. Private Const MOUSEEVENT_LEFTDOWN As UInteger = &H2
    8. Private Const MOUSEEVENT_LEFTUP As UInteger = &H4
    9. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    10. 'Koordinaten für Video Easy Fenster aktivieren
    11. Mk(830, 1055)
    12. Thread.Sleep(2000)
    13. 'Koordinaten für Video Easy Aufnahme beenden
    14. Mk(720, 590)
    15. End Sub
    16. Sub Mk(Xpos As Integer, Ypos As Integer)
    17. 'Mauszeiger positionieren
    18. System.Windows.Forms.Cursor.Position = New Point(Xpos, Ypos)
    19. mouse_event(MOUSEEVENT_LEFTDOWN, Xpos, Ypos, 0, 0)
    20. Thread.Sleep(100)
    21. mouse_event(MOUSEEVENT_LEFTUP, Xpos, Ypos, 0, 0)
    22. End Sub
    23. End Class
    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!