# Mausbewegung Simulieren



## KaiAusDerKiste2000 (7. Juni 2005)

Hallo Zusammen,

habe folgendes Problem:
Ich kann jede Mausbewegung sowie Klicks simulieren,
jedoch ein Mouse-ziehen (selection/markieren von einem
ausgewählten Bereich) bekomm ich einfach nicht hin.

Hat jemand einen Tip!

Danke
KaiAusDerKiste


----------



## Da Hacker (8. Juni 2005)

Herzlich Willkommen im Forum, KaiAusDerKiste2000!

Ich habe leider keine Lösung für dich, aber ich wollte mal nachfragen, ob du eventuell den relevanten Code für das Bewegen der Maustaste bereitstellen könntest. Das wäre wirklich nett von dir!

Aber jetzt mal so als kleiner Ansatz von einem hilfsbereiten Menschen:
Da du ja bereits einen Mausklick simulieren kannst, lässt sich eventuell auch der Code für das "dragen"(*würg*  ) der Maustaste davon ableiten. Ich stelle mir also vor, dass dein Code für das Klicken der Maustaste "MouseClick" oder so ähnlich ist. Also müsste es doch (theoretisch) auch ein Code wie "MouseStartDrag" oder so geben?
Du könntest dir vielleicht auch mit einer API-Referenz weiterhelfen - vorausgesetzt, die Mousebewegung ist eine API(klar, was denn sonst :-( ).

Ich hoffe ich konnte dir mit meinem Tipp weiterhelfen.

Ciao:
Da' Hacker


----------



## KaiAusDerKiste2000 (17. Juni 2005)

Sorry für meine verspättete Antwort Da Hacker.

Für das bewegen von der Maus einfach die Funktion
SetCursorPos() aufrufen. zum holen der aktuellen Position
natürlich GetCursorPos(). Für das ClickEvent die
Funktion mouse_event() verwenden.

```
lFlagUp = MOUSEEVENTF_LEFTDOWN + MOUSEEVENTF_LEFTUP
mouse_event lFlagUp Or MOUSEEVENTF_ABSOLUTE, lPosX, lPosY, 0, 0
```
macht ein LinksClick auf die Position lPosX+lPosY

Schau dir auch mal folgende Seite an:
http://www.activevb.de/tipps/vb6tipps/tipp0156.html

Hoffe der Hilft dir!

Zu meinem eigentlichem Problem habe ich es lieber ein MouseHook DLL
geschrieben (in C) ist viel besser, weil wirft nur Ergebnisse wenn die Maus
bewegt wurde. Es wird nicht ständig etwas ausgeführt (siehe stätiger timer Aufruf).


----------



## Da Hacker (17. Juni 2005)

Hallo KaiAusDerKiste2000,

dieser Code hilft mir auf jeden Fall, ich danke dir!
Bei deinem letzten Absatz, bin ich mir nicht sicher, ob du das Problem jetzt mithilfe einer in C geschriebenen DLL-Datei gelöst hast oder ob du wissen möchtest, wie du jene Datei in VB einbinden kannst.
Da du allerdings deinen Thread nicht als erledigt markiert hast, gehe ich davon aus, dass es zweiteres ist. Dabei kann ich dir leider nicht helfen, aber ich denke ich habe die Lösung, wie man das ziehen mit der API bewerkstelligen könnte.
Dieser Code

```
If aY <= dy And aX >= dx Then
        SetCursorPos dx, dy
        Timer1.Enabled = False
        Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
        Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
      End If
```
ruft am Ende (wahrscheinlich  ) das Drücken der Maustaste und das Loslassen der Maustaste auf. Also könnte man zwischen die Call-Anweisungen das Bewegen der Maus einfügen.
Ich kann das momentan nicht ausprobieren, aber vielleicht ist es ja richtig.
Ansonsten kann ich dir wohl mit meinem beschränkten Wissen nicht weiterhelfen. Aber ich habe sowieso das Gefühl, dass du das mit der DLL gelöst hast. Naja, mal gucken... 

Nochmal danke und Ciao:
Da' Hacker


----------

