2013-01-13 65 views
0

我试图根据当前的应用程序"open"应用程序尝试不同的事件 - 这是屏幕最重要的一个。我设法使用变量保存应用程序的名称。使用此代码。如果使用AppleScript的国家/地区

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 

但是这个代码不冲击片雷管做任何事情,我没有任何错误信息或任何然而,代码不显示对话框。如果我将对话框的代码放在代码的第一部分中,它将显示打开的应用程序的名称。

如何得到这个工作,那将是非常有益的

回答

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编辑器”比作一个列表{“的AppleScript编辑器”}。他们不是平等的,所以你的陈述永远不会是真的。

显示对话框显示一个字符串。所以当你将这些代码移到if语句之外时,applescript就足够聪明,可以将你的列表转换为一个字符串,以便显示它。

所以底线是你得到一个列表,你必须访问列表中的项目。这些项目是字符串,所以得到一个(在你的情况下,你想要项目1),并在if语句中使用它。

希望你能从这个解释中学习。祝你好运。

+0

谢谢大家,这非常有帮助。 – user1973521

0

在第一个脚本施放的openWindow变量为String的任何想法:

set openWindow to (get name of processes whose frontmost is true) as string 
相关问题