2013-01-13 60 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 
相關問題