nach einigen google-Suchen und eigenen Versuchen, wende ich mich an euch mit meinem kleinen Problem.
Auf meinem Mediacenter (ein MacMini) läuft EyeTV und XBMC mit dem SnowLeopard. Das Hin- und Herschalten habe ich per Applescript gelöst.
Die Bedienung habe ich mit einem iPhone oder iPad realisiert.
Jetzt stellte sich mir die Frage, ob es möglich ist, per AppleScript zu erkennen, ob EyeTV über die IR-FB ausgeschaltet wurde?
EyeTV wird beim Abschalten nicht beendet, sonder es wird nur das Programmfenster geschlossen! Also einen einfache Taskabfrage funktioniert hier nicht.
Kann ich durch Abfrage, z.B. alle 2s, feststellen, ob es zu ist??
SW-Lösungen wie Remote Buddy wollte ich nicht benutzen.
Hallo,
so solltest Du EyeTV beenden können:
“tell application “EyeTV”
activate
tell application “System Events”
key code 12 using {command down}
end tell
end tell
wobei key code 12 für q und using {command down} für die Apfel-Taste stehen.
alternativ kann auch folgender Befehl verwendet werden:
keystroke “q” using {command down}”
Dann mußt Du keine “Zeit” in einer “Abfragung” verschwenden
Ist aber dünnes Eis…
Gruß und Spaß
Andreas
Dein Skript schließt EyeTV ohne wenn und aber! Ich kann nur leider nicht festlegen, dass das Skript beim “Ausschalten über FB” von EyeTV gestartet wird. Oder geht das irgendwie??
Mein Ansatz wäre, z.B. das Prüfen, ob das Programmfenster offen ist oder nicht. Durch das Ausschalten über FB wird leider nur dieses Fenster geschlossen!! Ein anderer Ansatz fällt mir nicht ein!! Nur leider blicke ich nicht so richtig beim Befehlssatz und der Steuermöglichkeiten von EyeTV so richtig durch. Das Beenden von EyeTV selber war leider nicht das Problem.
So ganz habe ich noch nicht verstanden was Du genau erreichen möchtest. Du schliesst mit der Apple Remote das EyeTV Fenster, richtig? Nun möchtest Du ein Script, welches überprüft ob das Fenster geschlossen ist und dann etwas tut? Verstehe ich das richtig?
lg
Michael
Edit:
Hier mal ein Beispiel für ein solches Script. Du könntest das Script als Programm abspeichern und endlos im Hintergrund laufen lassen. Mit diesen Einstellungen (vorletzte Zeile, "do shell script “sleep 2”) wäre jeder Durchlauf um 2 Sekunden verzögert.
Das Script überprüft, ob EyeTV überhaupt läuft. Wenn ja, wird der Zustand von Player Window 1 abgefragt. Ist es vorhanden, dann wird die Variable FensterOffen auf 1 gesetzt. Ist es nicht vorhanden, dann auf 2. Die Variable kann folgende Zustände annehmen:
0 - EyeTV ist nicht gestartet
1 - EyeTV ist gestartet, Player Window ist offen
2 - EyeTV ist gestartet, Player Window ist geschlossen
2 wäre der Zustand wenn Du EyeTV wegschaltest, wenn ich das richtig verstanden habe. Das Script würde jetzt in diesem Fall EyeTV beenden. Hier lassen sich natürlich auch noch weitere Anweisungen einbauen.
Falls Du jedoch eine direkte Reaktion auf Deine Apple Remote haben möchtest, dann wirst Du vermutlich nicht um eine Zusatzsoftware wie z.B. Remote Buddy herum kommen. Zumindest mir ist kein Weg bekannt, der daran vorbei führt.
repeat
set FensterOffen to 0
tell application "System Events"
get every process
if exists application process "EyeTV" then
set FensterOffen to 2
tell application "EyeTV"
try
if exists player_window 1 then
set FensterOffen to 1
end if
end try
end tell
end if
end tell
if FensterOffen = 2 then
tell application "EyeTV" to quit
end if
do shell script "sleep 2"
end repeat
Mir war nicht klar, wie ich ein Fenster abfrage.
Heute Abend werde ich es dann gleich mal ausprobieren.
Die AppleRemote nutze ich dafür nicht, sondern die originale EyeTV FB.
Aber jetzt wo du es sagst, kann man den Mac nicht mit der AppleRemote ausschalten? Irgendwie klingelt es da bei mir?? Ich glaube ein langer Druck auf die Menü-Taste? Bin mir aber nicht sicher.
Aber dann müßte ich die wieder aus der Versenkung holen.