使用AppleScript的IF语句

时间:2013-01-13 04:37:11

标签: applescript

我正在尝试不同的事件,具体取决于当前"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

但是这段代码没有做任何事情,我没有任何错误消息或任何东西,但代码不显示对话框。如果我在对话框的第一部分放置对话框的代码,它将显示打开的应用程序的名称。

关于如何使其发挥作用的任何想法,这将是非常有帮助的

2 个答案:

答案 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