我正在尝试不同的事件,具体取决于当前"open"
应用程序的应用程序 - 最重要的是屏幕。我已设法使用变量保存应用程序的名称。使用此代码。
tell application "System Events"
item 1 of (get name of processes whose frontmost is true)
set openWindow to (get name of processes whose frontmost is true)
do shell script "echo " & openWindow & " > /Users/name/temp/currentWindow.txt"
end tell
然后我尝试使用此代码为每个打开的应用程序执行不同的事件
tell application "System Events"
if openWindow = "AppleScript Editor" then
display dialog "my variable: " & openWindow
end if
end tell
但是这段代码没有做任何事情,我没有任何错误消息或任何东西,但代码不显示对话框。如果我在对话框的第一部分放置对话框的代码,它将显示打开的应用程序的名称。
关于如何使其发挥作用的任何想法,这将是非常有帮助的
答案 0 :(得分:1)
为了解释你的问题,这是因为这段代码......
set openWindow to (get name of processes whose frontmost is true)
该代码返回一个项目列表。请注意,您要求进程(复数),因此您可以获得多个进程,因此AppleScript会将其作为列表提供给您,无论是否找到一个或多个项目。奇怪的是,在上面的行中,你确实要求列表的“第1项”,但由于某种原因你不会对该行代码做任何事情。通常我会写这样的代码行,所以我只得到第1项......
set openWindow to name of first process whose frontmost is true
无论如何,您无法将字符串“AppleScript Editor”与列表{“AppleScript Editor”}进行比较。它们并不相同,所以你的if语句永远不会成立。
显示对话框显示一个字符串。因此,当您将该代码移到if语句之外时,applescript足够聪明,可以将列表转换为字符串,以便显示它。
所以底线是你得到一个列表,你必须访问列表中的项目。这些项是字符串,所以得到一个(在你的情况下你想要第1项)并在if语句中使用它。
希望您可以从这个解释中学习。祝你好运。
答案 1 :(得分:0)
在第一个脚本中,将openWindow变量强制转换为字符串:
set openWindow to (get name of processes whose frontmost is true) as string