Linken Mausklick "simulieren"

  • VB.NET

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von ~blaze~.

    Linken Mausklick "simulieren"

    Hallo,
    gibt es irgendwie einen Befehl um einen Linken Mausklick auf einer bestimmten Koordinate auszuführen, also praktisch wie sendkeys (ohne Koordintaen) bloß mit einem mausklick ? Muss ich ein neues event erstellen ???
    MFG VBWorld
    Mathe ist für alle die, die nicht mit dem Taschenrechner umgehen können :D
    Gibt es, gib das einfach in der Suchmaschine deiner Wahl oder in der Forensuche ein und du findest sowas hier:
    Klick

    Du kannst das entweder machen indem du den Cursor erst bewegst und dann den API Aufruf machst, oder du such dir direkt das Handle von dem Item welches du klicken willst und machst das dann über Sendmessage...
    Erstmal Danke Telecrom,
    Aber iregdnwie verstehe ich nie wo ich jetzt die Koordinaten eingeben muss, oder woher das Programm überhaupt weiß wo es klicken soll. kannst du mir vielleicht nochmal ein Beispiel geben, indem ich Koordinaten eingeben muss ????
    MFG VBWorld
    Mathe ist für alle die, die nicht mit dem Taschenrechner umgehen können :D
    @VBWorld: Die Hilfe von @Telcrome: bezog sich darauf, Dich zu befähigen, eine Suchmaschine richtig zu füttern.
    Die Fähigkeit, sich Information zu besorgen, ist eigentlich das wichtigste hier im Forum und überhaupt.
    Deswegen langweile ich Dich auch nicht mit der Lösung Deines Problems, sondern ich fordere Dixch auf, selbst ein wenig mit Suchmaschinen zu spielen, um Deine Information zu finden.
    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!

    VBWorld schrieb:

    aber wenn man nichts findet
    92 Treffer allein im Forum, da ist unter Garantie das richtige dabei, ich weiß es.
    Wenn Du natürlich zu faul bist zu suchen, kannst Du Dich ja von ein paar schnelleren Newbees unterstützen lassen.
    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!
    Irgendwie ist das noch nicht das was ich will. Also mit sendkeys kann ich ja Tastenkombinationen senden z.B:

    VB.NET-Quellcode

    1. SendKeys.SendWait("{TAB}")


    Aber kann ich nicht auch einen Mausklick senden, wenn ich weiß worauf geklickt werden soll (also die Koordinaten weiß) ?
    MFG VBWorld
    Mathe ist für alle die, die nicht mit dem Taschenrechner umgehen können :D
    @VBWorld: Falsch gelesen, falsch abgeschrieben, falsch verstanden oder so.
    @Gonger96: schrieb SendMessage(), das ist eine API-Funktion, die hat mit SendKeys() wenig zu tun.
    Es gibt auch eine explizite API-Mouse-Funktion. Meine Hilfe: sie besteht nur aus Kleinbuchstaben und hat einen "_" im Namen.
    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!
    Auswählen was man braucht:

    VB.NET-Quellcode

    1. Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cbuttons As Long, ByVal dwExtraInfo As Long)
    2. Private Const MOUSEEVENTF_LEFTDOWN = &H2
    3. Private Const MOUSEEVENTF_LEFTUP = &H4
    4. Private Const MOUSEEVENTF_MIDDLEDOWN = &H20
    5. Private Const MOUSEEVENTF_MIDDLEUP = &H40
    6. Private Const MOUSEEVENTF_RIGHTDOWN = &H8
    7. Private Const MOUSEEVENTF_RIGHTUP = &H10


    Aufrufen zb. mit:

    VB.NET-Quellcode

    1. ' Rechts klick
    2. Call mouse_event(MOUSEEVENTF_RIGHTDOWN, MousePosition.X, MousePosition.Y, 0, 0)
    3. 'Links klick
    4. Call mouse_event(MOUSEEVENTF_LEFTDOWN, MousePosition.X, MousePosition.Y, 0, 0)
    5. 'ODER:
    6. 'Links klick - drücken + loslassen
    7. Cursor.Position = New Point(100, 100)
    8. Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
    9. Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)


    Positionen auslesen :

    ALLES IN TIMER ZU VERWENDEN !

    VB.NET-Quellcode

    1. Me.Label1.Text = "Die Form selbst: " & Me.Location.X.ToString() & " x " & Me.Location.Y.ToString()


    VB.NET-Quellcode

    1. Me.Label2.Text = "In der Form: " & e.X & " x " & e.Y


    VB.NET-Quellcode

    1. Label3.Text = "Auserhalb und in der Form: " & Cursor.Position.X.ToString() & " x " & Cursor.Position.Y.ToString()


    VB.NET-Quellcode

    1. ' Erkennen ob der Cursor außerhalb der Form ist
    2. If Cursor.Position.X - Me.Left > 0 And Cursor.Position.Y - Me.Top > 0 And Not Cursor.Position.X - Me.Left > Me.Width And Not Cursor.Position.Y - Me.Top > Me.Height Then
    3. Label4.Text = "Innen"
    4. Else
    5. Label4.Text = "Ausen"
    6. End If


    LG Andre.............. ;)
    Gut jetz wo ich genau weis was du willst :D

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cbuttons As Long, ByVal dwExtraInfo As Long)
    4. Private Const MOUSEEVENTF_LEFTDOWN = &H2
    5. Private Const MOUSEEVENTF_LEFTUP = &H4
    6. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    7. 'Links klick - drücken + loslassen
    8. Cursor.Position = New Point(100, 100)
    9. Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
    10. Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
    11. End Sub
    12. End Class


    LG Andre............ ^^

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „TVX“ ()

    @VBWorld:, @TVX: es klappt doch immer wieder.

    RodFromGermany schrieb:

    Wenn Du natürlich zu faul bist zu suchen, kannst Du Dich ja von ein paar schnelleren Newbees unterstützen lassen.
    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!
    Aber für @VBWorld: war es keine echte Hilfe. ;(
    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!