hallo pythons,
ich bin absolut neu bei python (wenn auch nicht bei programmiersprachen) und will ein kleines hilfsprogramm für die maus schreiben. dabei soll bei betätigung des mausrades der zeiger an ein feste stelle springen und die linke maustaste "betätigt" werden. das springen an die stelle kann ich schon
leider find ich aber nirgends den befehl, mit dem man das drehen des mausrades abfragt. wäre nett, wenn den jemand kurz schreiben könnte.
danke im voraus!
p.s: bitte nicht bloß einen link zu einem tutorial o.ä. posten. die find ich selber.
Absoluter Neuling braucht kleine Hilfe
Willkommen im Forum!
Geht es um Tkinter? Dann sollte das helfen:
http://www.python-forum.de/topic-14300.html
Geht es um Tkinter? Dann sollte das helfen:
http://www.python-forum.de/topic-14300.html
jupp, den thread hatte ich auch schon gefunden. um zu wissen, ob es um tkinter geht, müsst ich erstmal genau wissen, was das ist. wenn ichs richtig verstanden hab, ist das so ne art "grafikerweiterung" von python. an sich soll mein programm aber nichts grafisches machen, es soll wirklich AUSSCHLIEßLICH den cursor bewegen und "linksklick" machen.
also: nein, es geht nicht (genuin) um tkinter.
also: nein, es geht nicht (genuin) um tkinter.
ohje ohje. vielleicht ist python doch nicht das richtige werkzeug für mein vorhaben.
also geschrieben hab ich bisher noch gar nix, ab er es kann doch nicht so schwer sein, ein kleines script zu machen, das besagt: "wenn mousewheel nach unten, springe zu x,y und mach linksklick". oder?
mehr soll das wirklich nicht können!
hilfsprogramme? wozu?
also geschrieben hab ich bisher noch gar nix, ab er es kann doch nicht so schwer sein, ein kleines script zu machen, das besagt: "wenn mousewheel nach unten, springe zu x,y und mach linksklick". oder?
mehr soll das wirklich nicht können!
hilfsprogramme? wozu?
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Hehe ... so schwer ist das auch nicht - aber ohne die geringste Ahnung von Python dennoch unmöglich
Woher weißt Du denn, dass Du den Mauszeiger bewegen kannst, wenn Du noch nichts gecoded hast?
Prinzipiell ist Python dafür schon genau richtig - aber es bedarf eben dennoch etwas Einarbeitungszeit und viel Lesen von Doku und Beispielscripts!
Woher weißt Du denn, dass Du den Mauszeiger bewegen kannst, wenn Du noch nichts gecoded hast?
Prinzipiell ist Python dafür schon genau richtig - aber es bedarf eben dennoch etwas Einarbeitungszeit und viel Lesen von Doku und Beispielscripts!
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Kakihara!Kakihara hat geschrieben:es kann doch nicht so schwer sein, ein kleines script zu machen, das besagt: "wenn mousewheel nach unten, springe zu x,y und mach linksklick". oder?
Das ist es aber. Es ist sehr einfach, Events abzufangen, wenn sie in das eigene Fenster übermittelt werden. Aber global? Da müsste man den Event-Fluss des Betriebssystems unterbrechen.
So funktioniert es, die Events des Mausrades eines wxPython-Fensters zu empfangen.
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
import wx
wx.SetDefaultPyEncoding("iso-8859-15")
def on_mousewheel(event):
print "x"
app = wx.PySimpleApp()
f = wx.Frame(None)
f.Bind(wx.EVT_MOUSEWHEEL, on_mousewheel)
f.Center()
f.Show()
app.MainLoop()
Aber um nicht ganz abzuschweifen: Die Windows API-Funktion "CallWindowProc" ist dafür zuständig, Nachrichten abzufangen.
Links dazu:
- http://aspn.activestate.com/ASPN/Cookbo ... ipe/355593
- http://www.python-forum.de/post-88021.html#88021
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo!
Um die Sache zu ergänzen...
Ich weiß nur nicht, wie man im Windows die Events für ALLE Programme abfängt. SPY++ gibt bei einem Versuch, diese Events abzuhorchen eine Fehlermeldung aus, die besagt, dass Windows das nicht zulässt.
mfg
Gerold
Um die Sache zu ergänzen...
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
import wx
import win32gui
import win32con
import win32api
class TestFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None)
self.hwnd = self.GetHandle()
self.oldWndProc = win32gui.SetWindowLong(
self.hwnd, win32con.GWL_WNDPROC, self.MyWndProc
)
def MyWndProc(self, hWnd, msg, wParam, lParam):
if msg == win32con.WM_MOUSEWHEEL:
f = file("J:\\Ablage\\mousewheel.txt", "a")
f.write("mousewheel\n")
f.close()
elif msg == win32con.WM_DESTROY:
win32api.SetWindowLong(
self.hwnd, win32con.GWL_WNDPROC, self.oldWndProc
)
return win32gui.CallWindowProc(
self.oldWndProc, hWnd, msg, wParam, lParam
)
app = wx.PySimpleApp()
frame = TestFrame()
frame.Show()
app.MainLoop()
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
hehe ich sollte mich doch nach was anderem umsehen, glaube ich. es gibt jedenfalls de facto programme, die das mousewheel global abfragen können.
@pütone: programmiert hab ich schon in allem möglichen, unter anderem in Qbasic, Turbo Pascal, C++, Delphi, VB, LabVIEW, Ada... you name it. allerdings nie besonders lange in einer davon und auch nie wirklich ernsthaft.
wollte auch nur damit andeuten, dass ich keine erklärung brauch, was ne schleife oder ne variable ist oder so
@hyperion: onkel google hat mit den worten mouse move python als erstes ergebnis das hier zutage befördert:
>>> from ctypes import *
>>> windll.user32.SetCursorPos(100, 100)
(und das funzt auch)
@pütone: programmiert hab ich schon in allem möglichen, unter anderem in Qbasic, Turbo Pascal, C++, Delphi, VB, LabVIEW, Ada... you name it. allerdings nie besonders lange in einer davon und auch nie wirklich ernsthaft.
wollte auch nur damit andeuten, dass ich keine erklärung brauch, was ne schleife oder ne variable ist oder so
@hyperion: onkel google hat mit den worten mouse move python als erstes ergebnis das hier zutage befördert:
>>> from ctypes import *
>>> windll.user32.SetCursorPos(100, 100)
(und das funzt auch)
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Wie kannst du dir anmaßen, auch nur anzunehmen, dass man das mit Python nicht machen kann! Dass ich nicht weiß, ohne Google zu verwenden, wie so etwas funktioniert, heißt noch lange nicht, dass es nicht machbar ist.Kakihara hat geschrieben:hehe ich sollte mich doch nach was anderem umsehen, glaube ich. es gibt jedenfalls de facto programme, die das mousewheel global abfragen können.
Ich klinke mich aus dieser Diskussion aus. Es ärgert mich, wenn jemand Python nicht kennt und trotzdem schon in den ersten paar Beiträgen hier im Forum auf Python herumreitet. Wenn es mit anderen Sprachen geht, dann geht es mit Python auch. Merke dir das.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- nkoehring
- User
- Beiträge: 543
- Registriert: Mittwoch 7. Februar 2007, 17:37
- Wohnort: naehe Halle/Saale
- Kontaktdaten:
hui, da ist jemand aber sauer ^^ (möp, offtopic, ich weiß ^^ )
EDIT: Und um noch n bissl was konstruktiveres zu bringen... Was du da gefunden hast, spricht die Windows-API an. Es ist schonmal gut zu wissen, dass du das unter Windows machen willst. Unter Linux wird diese Variante mit hundertprozentiger Sicherheit nicht funktionieren!
Dein Ansatz fuehrt vermutlich sehr schnell zu einer Loesung, wenn du dir die Windows-API-Docs mal durchschaust und nach einer entsprechenden Methode in der User32.dll suchst, die einen Klick ausloest. Vorausgesetzt es gibt diese in der Form.
EDIT: Und um noch n bissl was konstruktiveres zu bringen... Was du da gefunden hast, spricht die Windows-API an. Es ist schonmal gut zu wissen, dass du das unter Windows machen willst. Unter Linux wird diese Variante mit hundertprozentiger Sicherheit nicht funktionieren!
Dein Ansatz fuehrt vermutlich sehr schnell zu einer Loesung, wenn du dir die Windows-API-Docs mal durchschaust und nach einer entsprechenden Methode in der User32.dll suchst, die einen Klick ausloest. Vorausgesetzt es gibt diese in der Form.
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Und das zu Recht!nkoehring hat geschrieben:hui, da ist jemand aber sauer ^^ (möp, offtopic, ich weiß ^^ )
Gerold hat sich dankenswerter Weise 'ne Menge Arbeit damit gemacht,
was man von dem, der um Rat gefragt hat, nicht gerade behaupten kann.
Hätte er sich von Anbeginn an klarer ausgedrückt (Betriebssystem, verwendete Software/Hilfsmittel, was genau ist das Ziel etc.), wäre die Sache einfacher gewesen.
- nkoehring
- User
- Beiträge: 543
- Registriert: Mittwoch 7. Februar 2007, 17:37
- Wohnort: naehe Halle/Saale
- Kontaktdaten:
Das lernt er schon noch. Jeder macht mal Fehler... und wenn er es nicht lernt, dann haben wir wenigstens Hilfsbereitschaft gezeigt.
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hmmm!
Ich war da schon ein wenig hart, denn ich habe mich ein paar Beiträge vorher nicht richtig ausgedrückt.
1.) Eine harte Nuss für einen Anfänger
2.) Es steckt ziemlich viel GUI-Logik hinter dem Mausrad. Das Mausrad-Event wird an das Fenster weitergeleitet, welches sich **unter** dem Mauscursor befindet. Es kann aber auch an das Steuerelement weitergeleitet werden, welches sich unter dem Mauscursor befindet. Zumindest dann, wenn das der installierte Treiber (z.B. IntelliMaus) so vorsieht. Ohne Treiber oder mit einem anderen Treiber sieht die Sache schon wieder ganz anders aus. Wenn man global einfach das Mausrad-Event abfangen kann, dann würde wahrscheinlich einiges durcheinander kommen. Soll heißen: Was an einem Computer mit der Maus X funktioniert kann an einem anderen Computer mit der Maus Y schon zum Eventchaos führen.
Was ich damit zuerst sagen wollte: Es würde mich wundern, wenn es funktioniert. Da es aber anscheinend funktioniert, wundert es mich, dass es funktioniert. Aber wenn es machbar ist, dann kann man es auch mit Python machen.
mfg
Gerold
PS: Ich sollte wohl besser schlafen gehen.
.
Ich war da schon ein wenig hart, denn ich habe mich ein paar Beiträge vorher nicht richtig ausgedrückt.
Damit meinte ich eigentlich zwei Sachen:Gerold hat geschrieben:Ich glaube (bis ich eines besseren belehrt werde), dass das globale Abhorchen des Mausrades zum Scheitern verurteilt ist. Überhaupt für einen Anfänger.
1.) Eine harte Nuss für einen Anfänger
2.) Es steckt ziemlich viel GUI-Logik hinter dem Mausrad. Das Mausrad-Event wird an das Fenster weitergeleitet, welches sich **unter** dem Mauscursor befindet. Es kann aber auch an das Steuerelement weitergeleitet werden, welches sich unter dem Mauscursor befindet. Zumindest dann, wenn das der installierte Treiber (z.B. IntelliMaus) so vorsieht. Ohne Treiber oder mit einem anderen Treiber sieht die Sache schon wieder ganz anders aus. Wenn man global einfach das Mausrad-Event abfangen kann, dann würde wahrscheinlich einiges durcheinander kommen. Soll heißen: Was an einem Computer mit der Maus X funktioniert kann an einem anderen Computer mit der Maus Y schon zum Eventchaos führen.
Was ich damit zuerst sagen wollte: Es würde mich wundern, wenn es funktioniert. Da es aber anscheinend funktioniert, wundert es mich, dass es funktioniert. Aber wenn es machbar ist, dann kann man es auch mit Python machen.
mfg
Gerold
PS: Ich sollte wohl besser schlafen gehen.
.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Also wenn's nur unter Windows laufen muss, gibt's doch genug Programme, die extra für solche Zwecke da sind.
Auto Hotkey find ich nett, ne simple, Skriptsprache und jede Menge Möglichkeiten.
Da würde das dann irgendwie so aussehn (ungetestet):
Nichts gegen Python oder so ... Aber imho ist das deutlich praktischer als für diesen Zweck Python zu benutzen. Man kann Python für vieles, rein theoretisch sogar für alles benutzen, aber es _muss_ ja nicht immer Python sein
Auto Hotkey find ich nett, ne simple, Skriptsprache und jede Menge Möglichkeiten.
Da würde das dann irgendwie so aussehn (ungetestet):
Code: Alles auswählen
Loop {
KeyWait, WheelDown, D ; Bin mir nicht ganz sicher ;o aber müsste wie jeder Button behandelt werden, auch wenn man ihn dreht ;)
Click 100, 200 ; Click left mouse button at specified coordinates
}
wie amüsant, was ich hier (unwillentlich) vom zaun gebrochen habe. nur soviel sei fürs erste gesagt: mit "programme" war nicht "programmiersprachen" gemeint... (und schon gar nicht wollte ich python dissen)
öhm vermutlich sollte aber auch ich erstmal in die heia...
erstmal ein dickes danke an alle, die sich bisher gedanken drum gemacht haben, denn das weiß ich durchaus zu schätzen!
jetz aber erstmal gut nacht
öhm vermutlich sollte aber auch ich erstmal in die heia...
erstmal ein dickes danke an alle, die sich bisher gedanken drum gemacht haben, denn das weiß ich durchaus zu schätzen!
jetz aber erstmal gut nacht