Ich möchte den Befehl ⌘ Cmd + ⇧ Shift + D
mittels Apple Skript ausführen
Mit folgendem Kommando funktioniert es nicht
tell application "System Events"
delay 0.5
keystroke "d" using {shift down, command down}
end tell
Wer weiß Rat?
Sind sie im Januar bei diesem Problem weitergekommen? Ich habe exakt das gleiche Problem, möchte das sich in bestimmten Aktionsketten die Medikamentenverordnung öffnet. Der Versuch:
tell application "System Events"
keystroke "M" using {command down, control down}
end
,den ich letzlich aus dem Impfprogrammaufruf von Tomedo entnommen und abgewandelt habe, geht nicht. (Der Impfprogrammaufruf allerdings auch nicht....)
Also ich wende diese einfachen GUI-Befehle in Apple-Scripts, um Tasten zu drücken, eigentlich erfolgreich an. Folgende Probleme könnten bei Ihnen vorliegen:
1. Wie anderweitig schon erwähnt, zum Zeitpunkt des Tasendrucks könnte das richtige Fenster nicht aktiv sein. Darauf zu achten, ist man bei der Erstellung von Aktionsketten nicht gewöhnt, da dann tomedo auf die richtige Umgebung der gewünschten Aktion selbst achtet. D.h. Sie müssen bei Erstellen und Ausführen der Aktionskette darauf achten, dass sie immer in derselben Situation gestartet wird.
2. System Events und tomedo haben möglicherweise nicht die Rechte bekommen, das zu tun, was Sie von ihnen verlangen. Da ist macOS in den letzten Versionen zunehmend strenger geworden und bei Aufruf von Scripten außerhalb des Scripteditors werden mitunter die entsprechenden Fehlermeldungen verschluckt. Folgendes sollte unter Sicherheit in des Sytemeinstellungen vorhanden sein:
3. Die tell-Befehle im Script müssen richtig verschachtelt sein. Z.B.:
tell application "System Events"
tell process "tomedo"
key code 8 using command down
end tell
end tell
Ich verwende auch lieber den Befehl key code anstatt keystroke, da man alle Tasten einer großen Tastatur spezifisch ansprechen kann. Die Codes für die Tasten kann man z.B. hier nachschauen.
@Michael Hofdmann: Dabei werden übrigens keine Tastendrücke auf Tastaturebene simuliert, sondern das Ergebnis der Tastenkombination ans Betriebssystem geschickt; das hat also nicht mit Zeitdauer des Befehls o.ä. zu tun.