Mausaktivität ausführen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
lordmyder

Mittwoch 26. September 2007, 17:31

Hallo,
ich würde gerne den Mauszeiger per Python-Script über den Bildschirm wandern lassen zu einem bestimmten Punkt um dort dann einen Mausklick zu simulieren.
Ist das möglich?
Ich weiß, dass man die Cursorposition verändern kann, das gelinkt mir auch schon, aber kann man einen Mausklick simulieren?
Danke für eure Antworten,
LordMyder
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Mittwoch 26. September 2007, 18:18

Hallo lordmyder!

Linux? Windows? KDE? Gnome? ;-)

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
lordmyder

Mittwoch 26. September 2007, 18:41

Sry, hab ich ganz vergessen :-D
Ich bin Windows XP Nutzer...
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Mittwoch 26. September 2007, 18:43

gerold hat geschrieben:Hallo lordmyder!

Linux? Windows? KDE? Gnome? ;-)

mfg
Gerold
:-)
*nix User wissen doch wie man Fragen stellt *hoff*.

Somit wird er die Antwort wohl da finden:
http://www.python-forum.de/topic-11455,15.html
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Mittwoch 26. September 2007, 19:45

lordmyder hat geschrieben:Sry, hab ich ganz vergessen :-D
Ich bin Windows XP Nutzer...
Hallo lordmyder!

Ja dann funktioniert das so: :-)

Code: Alles auswählen

>>> import win32api
>>> import win32con
>>> def mouse_event(x, y):
...     win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, x, y, 0, 0)
...     win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, x, y, 0, 0)
...     
>>> mouse_event(10, 10)
>>>
Ich weiß nur noch nicht, wo jetzt hingeklickt wird. :roll:

EDIT:

http://www.danielmoth.com/Blog/2004/11/mouseevent.html
Das jetzt umzusetzen, habe ich jetzt aber keine Lust.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
lordmyder

Mittwoch 26. September 2007, 20:01

Danke für die schnelle Hilfe!
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Mittwoch 26. September 2007, 21:38

.......geht das auch unter gnome.......... ?
cp != mv
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Mittwoch 26. September 2007, 23:04

Nachtrag:

Hier wird gezeigt wie es richtig funktioniert:
pywinauto --> Modul: controls/HwndWrapper.py --> Funktion: _perform_click_input

In _perform_click_input wird mit ``SendInput`` gearbeitet, was laut "Windows Platform SDK" die derzeit aktuelle Variante ist um ein Mausevent los zu schicken. --- Wenn ich so die PSDK durchsehe... Die WinAPI ist teilweise wirklich zum Kotzen.

- http://msdn2.microsoft.com/en-us/library/ms646310.aspx
- http://msdn2.microsoft.com/en-us/library/ms646270.aspx
- http://msdn2.microsoft.com/en-us/library/ms646273.aspx

Und das alles nur um einen Mausklick mit der linken Maustaste los zu werden. :roll:

- pywinauto: http://www.openqa.org/pywinauto/
- http://svn.openqa.org/fisheye/browse/py ... =607#l1449

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Mittwoch 26. September 2007, 23:27

Nachtrag2:

Code: Alles auswählen

>>> from pywinauto.controls.HwndWrapper import _perform_click_input as perform_click_input
>>> perform_click_input(coords=(10, 10))
>>>
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten