Hallo,
ich möchte es zum einen möglich machen die ZDF-Mediathek bei mir am Rechner zu steuern (mit simulierten Klicks), als auch das WMPlayer-Plugin. Leider wird immer nur der letzte Klick ausgeführt. Weiß jemand, wie man dieses Problem beheben kann? Eine Pause hilft nicht. Mit dem senden einer Nachricht und verarbeiten in einem zweiten Makro habe ich leider das Problem gehabt, dass ne Art Endlosschleife entstanden ist.
Edit: Bei der Endlosschleife habe ich wohl nen Fehler gemacht gehabt. Leider Funktioniert dies nicht. Ich habe es nun so gelöst bekommen, dass ich überprüfe, ob der Firefox als Unterfenster die Mediathek / das WMPlayer Plugin hat und leite dann auf entsprechende Makros um.
Achtung: Beim Wechsel in den Vollbildmodus wird in ein anderes Fenster gewechselt!
Zwei Klick-Befehle in einem Makro [gelöst]
Re: Zwei Klick-Befehle in einem Makro [gelöst]
Ich habe die Makros nun auf Python-Skripte umgestellt. Diese benutzen die WinAPI um den Fenstertitel von Firefox zu ermitteln und anhand diesem zwischen den verschiedenen Aktionen für ZDF-Mediathek, ARD-Mediathek, 3sat-Mediathek und WindowsMediaPlayerPlugin zu unterscheiden. Anschlißend wird die Cursorposition mit windll.user32.SetCursorPos(x,y) gesetzt und mittels win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); ein Klick simuliert. Es wird Play/Pause, Stop (je nach Seite) und Vollbild unterstützt. Ausgegangen wird bei den Klicksimulationen vom maximierten Firefox mit Menüleiste, Navigations-Symbolleiste, Lesezeichen-Symbolseite, Tabs und Statusleiste bei FullHD-Auflösung (1920 × 1080 Pixel).
Hier mal das Beispiel für Play/Pause direkt im Firefox:
Hier die Einzelnen Schnipsel (sie müssen an die richtigen Stelle in EventGhost kopiert werden):
Ordner Firefox aktivieren:
Ordner Firefox Vollbild aktivieren:
Ordner Firefox Vollbild deaktivieren:
Firefox Ordner:
Firefox Vollbild Ordner:
Dies ist bei mir in Keboardsimulation drin:
Hier mal das Beispiel für Play/Pause direkt im Firefox:
Code: Select all
import win32gui as WGui, win32con, win32api, time
from ctypes import windll
FWindow=WGui.GetWindowText(WGui.GetForegroundWindow())
ZDFM=FWindow.find("ZDFmediathek")
WMPP=FWindow.find("video/x-ms-asf-Objekt")
SATM=FWindow.find("3sat.Mediathek - Video")
WMPPF=FWindow.find("FullScreenBottomLayout")
WMPPF2=FWindow.find("WMPTransition")
ARDM=FWindow.find("ARD Mediathek:")
if ZDFM!=-1:
windll.user32.SetCursorPos(465,930)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
if WMPP!=-1:
windll.user32.SetCursorPos(20,1040)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
if SATM!=-1:
windll.user32.SetCursorPos(620,515)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
if (WMPPF!=-1) or (WMPPF2!=-1):
windll.user32.SetCursorPos(950,1079)
windll.user32.SetCursorPos(950,1040)
time.sleep(0.1)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
if ARDM!=-1:
windll.user32.SetCursorPos(730,590)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
Hier die Einzelnen Schnipsel (sie müssen an die richtigen Stelle in EventGhost kopiert werden):
Ordner Firefox aktivieren:
Code: Select all
<?xml version="1.0" encoding="UTF-8" ?>
<EventGhost Version="1462">
<Macro Name="Aktiviere exklusiv: Firefox" Expanded="True">
<Event Name="Task.Activated.firefox" />
<Action>
EventGhost.EnableExclusive(XmlIdLink(439))
</Action>
</Macro>
</EventGhost>
Code: Select all
<?xml version="1.0" encoding="UTF-8" ?>
<EventGhost Version="1462">
<Macro Name="Aktiviere exklusiv: Firefox Vollbild" Expanded="True">
<Event Name="Task.Activated.plugin-container" />
<Action>
EventGhost.EnableExclusive(XmlIdLink(472))
</Action>
</Macro>
</EventGhost>
Code: Select all
<?xml version="1.0" encoding="UTF-8" ?>
<EventGhost Version="1462">
<Macro Name="Deaktiviere Firefox Vollbild" Expanded="True">
<Event Name="Task.Deactivated.plugin-container" />
<Action>
EventGhost.PythonScript(u'import win32gui as WGui, win32api, win32con, time\nfrom ctypes import windll\n\nFWindow=WGui.GetWindowText(WGui.FindWindow(\'MozillaUIWindowClass\',None))\nZDFM=FWindow.find("ZDFmediathek")\n\nif ZDFM!=-1:\n time.sleep(0.05)\n windll.user32.SetCursorPos(1430,800)\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);\n')
</Action>
</Macro>
</EventGhost>
Code: Select all
<?xml version="1.0" encoding="UTF-8" ?>
<EventGhost Version="1462">
<Folder Name="Firefox" id="439" Enabled="False" Expanded="True">
<Macro Name="Play/Pause" Expanded="True">
<Event Name="X10.Play" />
<Action>
EventGhost.PythonScript(u'import win32gui as WGui, win32con, win32api, time\nfrom ctypes import windll\n\nFWindow=WGui.GetWindowText(WGui.GetForegroundWindow())\nZDFM=FWindow.find("ZDFmediathek")\nWMPP=FWindow.find("video/x-ms-asf-Objekt")\nSATM=FWindow.find("3sat.Mediathek - Video")\nWMPPF=FWindow.find("FullScreenBottomLayout")\nWMPPF2=FWindow.find("WMPTransition")\nARDM=FWindow.find("ARD Mediathek:")\n\nif ZDFM!=-1:\n windll.user32.SetCursorPos(465,930)\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);\n\nif WMPP!=-1:\n windll.user32.SetCursorPos(20,1040)\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);\n\nif SATM!=-1:\n windll.user32.SetCursorPos(620,515)\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);\n\nif (WMPPF!=-1) or (WMPPF2!=-1):\n windll.user32.SetCursorPos(950,1079)\n windll.user32.SetCursorPos(950,1040)\n time.sleep(0.1)\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);\n\nif ARDM!=-1:\n windll.user32.SetCursorPos(730,590)\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);\n')
</Action>
</Macro>
<Macro Name="Stop" Expanded="True">
<Event Name="X10.Stop" />
<Action>
EventGhost.PythonScript(u'import win32gui as WGui, win32con, win32api, time\nfrom ctypes import windll\n\nFWindow=WGui.GetWindowText(WGui.GetForegroundWindow())\nWMPP=FWindow.find("video/x-ms-asf-Objekt")\nSATM=FWindow.find("3sat.Mediathek - Video")\nWMPPF=FWindow.find("FullScreenBottomLayout")\nWMPPF2=FWindow.find("WMPTransition")\nARDM=FWindow.find("ARD Mediathek:")\n\nif WMPP!=-1:\n windll.user32.SetCursorPos(45,1040)\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);\n\nif SATM!=-1:\n windll.user32.SetCursorPos(645,515)\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);\n\nif (WMPPF!=-1) or (WMPPF2!=-1):\n windll.user32.SetCursorPos(865,1079)\n windll.user32.SetCursorPos(865,1040)\n time.sleep(0.1)\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);\n\nif ARDM!=-1:\n windll.user32.SetCursorPos(810,590)\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);\n ')
</Action>
</Macro>
<Macro Name="Fullscreen" Expanded="True">
<Event Name="X10.D" />
<Action>
EventGhost.PythonScript(u'import win32gui as WGui, win32con, win32api, time\nfrom ctypes import windll\n\nFWindow=WGui.GetWindowText(WGui.GetForegroundWindow())\nZDFM=FWindow.find("ZDFmediathek")\nWMPP=FWindow.find("video/x-ms-asf-Objekt")\nSATM=FWindow.find("3sat.Mediathek - Video")\nWMPPF=FWindow.find("FullScreenBottomLayout")\nWMPPF2=FWindow.find("WMPTransition")\nARDM=FWindow.find("ARD Mediathek:")\n\nif ZDFM!=-1:\n windll.user32.SetCursorPos(1350,930)\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);\n\nif WMPP!=-1:\n windll.user32.SetCursorPos(950,500)\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);\n\nif SATM!=-1:\n windll.user32.SetCursorPos(850,350)\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);\n\nif (WMPPF!=-1) or (WMPPF2!=-1):\n windll.user32.SetCursorPos(950,500)\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);\n\nif ARDM!=-1:\n windll.user32.SetCursorPos(950,590)\n time.sleep(0.05)\n windll.user32.SetCursorPos(960,590)\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);')
</Action>
</Macro>
</Folder>
</EventGhost>
Code: Select all
<?xml version="1.0" encoding="UTF-8" ?>
<EventGhost Version="1462">
<Folder Name="Firefox Vollbild" id="472" Enabled="False" Expanded="True">
<Macro Name="Play/Pause" Expanded="True">
<Event Name="X10.Play" />
<Action>
EventGhost.PythonScript(u'import win32gui as WGui, win32api, win32con, time\nfrom ctypes import windll\n\nFWindow=WGui.GetWindowText(WGui.FindWindow(\'MozillaUIWindowClass\',None))\nZDFM=FWindow.find("ZDFmediathek")\nARDM=FWindow.find("ARD Mediathek:")\n\n\nif ZDFM!=-1:\n windll.user32.SetCursorPos(0,1080)\n time.sleep(0.05)\n windll.user32.SetCursorPos(230,1010)\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);\n\nif ARDM!=-1:\n windll.user32.SetCursorPos(950,1010)\n time.sleep(0.05)\n windll.user32.SetCursorPos(950,1040)\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);\n')
</Action>
</Macro>
<Macro Name="Fullscreen" Expanded="True">
<Event Name="X10.D" />
<Action>
EventGhost.PythonScript(u'import win32gui as WGui, win32api, win32con, time\nfrom ctypes import windll\n\nFWindow=WGui.GetWindowText(WGui.FindWindow(\'MozillaUIWindowClass\',None))\nZDFM=FWindow.find("ZDFmediathek")\nARDM=FWindow.find("ARD Mediathek:")\n\n\nif ZDFM!=-1:\n windll.user32.SetCursorPos(0,1080)\n time.sleep(0.05)\n windll.user32.SetCursorPos(1550,1010)\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);\n\nif ARDM!=-1:\n windll.user32.SetCursorPos(1890,1010)\n time.sleep(0.05)\n windll.user32.SetCursorPos(1890,1040)\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);\n')
</Action>
</Macro>
<Macro Name="Python Script" Expanded="True">
<Event Name="X10.Stop" />
<Action>
EventGhost.PythonScript(u'import win32gui as WGui, win32api, win32con, time\nfrom ctypes import windll\n\nFWindow=WGui.GetWindowText(WGui.FindWindow(\'MozillaUIWindowClass\',None))\nARDM=FWindow.find("ARD Mediathek:")\n\nif ARDM!=-1:\n windll.user32.SetCursorPos(1020,1010)\n time.sleep(0.05)\n windll.user32.SetCursorPos(1020,1040)\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);\n win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);\n')
</Action>
</Macro>
</Folder>
</EventGhost>
Code: Select all
<?xml version="1.0" encoding="UTF-8" ?>
<EventGhost Version="1462">
<Event Name="Task.Deactivated.firefox" />
</EventGhost>