default answer
Wenn man den Parameter in in AppleScript verwendet display dialog
, wird der eingestellte Text default answer
bei der Anzeige des Dialogs automatisch hervorgehoben.
Ist es möglich, eine Standardantwort anzugeben, ohne dass die Antwort hervorgehoben wird?
Ich möchte idealerweise, dass der Cursor hinter dem letzten Zeichen der Standardantwort platziert wird, sodass der Benutzer Text an diese Antwort anhängen kann, ohne zuerst die Taste zu drücken ( →oder schlimmer noch, versehentlich die Standardantwort zu überschreiben).
Ich habe es herausgefunden.
Drückt man nur Millisekunden vor der Anzeige des Dialogs die rechte Pfeiltaste , so default answer
wird der nicht ausgewählt und der blinkende Cursor wird hinter den Standardtext gesetzt.
Sie können diese Aktion in AppleScript wie folgt ausführen:
-- Unselect the “default answer” in an input dialog:
tell application "System Events"
key code 124 -- right arrow key
end tell
display dialog "Enter a keyword:" default answer "I do not want this text to be highlighted. "
Theoretisch sollte die obige Lösung nicht funktionieren. Theoretisch sollte der Tastendruck beginnen und abgeschlossen sein, bevor der display dialog
Befehl eingeleitet wird. Aber diese Methode funktioniert, warum auch immer.
Hinweis: Diese Methode funktioniert nicht, wenn Sie key code 124
vor dem allerersten Dialog Ihrer AppleScript-Datei einfügen. In diesem Fall verhält sich mein obiger Code nicht wie gewünscht und der default answer
Text bleibt ausgewählt. (Es kann irreführend erscheinen, richtig zu funktionieren, wenn Sie den AppleScript-Code einfach in Script Editor.app oder Automator.app ausführen, aber es funktioniert nicht richtig, wenn Sie die .scpt-Datei über Fast Scripts, osascript
in Terminal.app oder jede andere Methode.)
Wenn es sich jedoch display dialog
um den zweiten, dritten oder fünfzigsten Dialog in einer AppleScript-Datei handelt, funktioniert meine Lösung ordnungsgemäß. Fragen Sie mich nicht, warum es beim ersten Dialog nicht funktioniert (weil ich es nicht weiß).
Sie haben also keine andere Wahl, als die Dialoge der AppleScript-Datei neu anzuordnen, sodass der erste Dialog keine default answer
.
Wenn Ihr Anfangsdialog ein default answer
nicht ausgewähltes haben muss, besteht eine Problemumgehung darin, einen Dialog einzufügen, der automatisch fortgesetzt wird, nachdem eine kurze Zeitspanne verstrichen ist. Dieser Dialog sollte unmittelbar vor dem obigen Tell-Block eingefügt werden. Es ist keine elegante Lösung, aber hier ist ein Code, der funktionieren wird:
display alert "Please wait..." message "..." buttons ("") giving up after 1
-- I think that "1" is the minimum for "giving up after." I tried "0.5" and the dialog completely stalled.
Solange es nicht dem Anfangsdialog eines Skripts vorausgeht, habe ich persönlich meine Methode als zuverlässig empfunden; es funktioniert 100% der Zeit auf meinem Computer.
key code
Ereignis eigentlich vor dem enden sollte display dialog
. Es wird wahrscheinlich auf jedem getesteten System variieren und meiner Meinung nach ist es ein Zufall, dass es für Sie zuverlässig ist. Darüber hinaus ist zuverlässig , wenn es für jeden, der es versucht, jedes Mal funktioniert.display dialog
sich nicht um den ersten Dialog eines AppleScripts handelt (und wenn Sie die .scpt-Datei tatsächlich außerhalb einer Umgebung wie Script Editor.app oder Automator.app ausführen)?osascript
.
klanomath
Rubiks Sphäre
default answer
nicht ausgewählt ist, damit der Benutzer sofort Text anhängen kann, ohne zuerst die rechte Pfeiltaste drücken zu müssen). Der Einsatz von adefault answer
ist für mich der effizienteste Weg, all diese Optionen dem Benutzer zur Verfügung zu stellen.