2013-05-21 56 views
2

我使用Time Tracker For Mac作爲我的好時間跟蹤器。它有一個菜單欄項目,我希望能夠通過鍵盤快捷方式訪問。用AppleScript單擊應用程序菜單欄項目

我找到了一種方法單擊帶有GUI腳本項目:

tell application "System Events" to tell process "Time Tracker" 
    click menu bar item of menu bar 2 
end tell 

不幸的是,腳本不返回成功,除非我的行爲(即按Enter鍵或Esc鍵)在菜單上。所以,如果我想觸發向下箭頭鍵...

tell application "System Events" to tell process "Time Tracker" 
    click menu bar item of menu bar 2 
    -- hangs here forever until menu is closed 
    tell application "System Events" to key code 124 
end tell 

腳本只是等待永遠。如果我點擊逃生菜單欄項目關閉,只有然後向下箭頭鍵將被觸發。

這有點奇怪。我只需要菜單欄項目的點擊到而不是阻止進一步的腳本執行。

有什麼建議嗎?

回答

2

對我來說,點擊命令後約5秒鐘返回。一種解決方法是使用忽略應用程序響應和終止系統事件:

ignoring application responses 
    tell application "System Events" to tell process "Time Tracker" 
     click menu bar item 1 of menu bar 2 
    end tell 
end ignoring 
do shell script "killall System\\ Events" 
delay 0.1 
tell application "System Events" to tell process "Time Tracker" 
    tell menu bar item 1 of menu bar 2 
     click menu item 2 of menu 1 
    end tell 
end tell 

相關問題:

+0

非常感謝。這確實有效。我不太願意徹底殺死這個過程,但我會嘗試一段時間。 – LeEnno

+1

根據[守護進程和服務編程指南](http://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/Lifecycle.html),loginwindow向後臺進程發送TERM或KILL信號和註銷時的守護進程。系統事件支持突然終止,所以即使發送KILL信號也應該是安全的。 – user495470

1

實際上,向下箭頭鍵碼似乎是125試試這個:

tell application "System Events" to tell process "Time Tracker" 
    click menu bar item of menu bar 2 
    key code 125 
    key code 36 
end tell 

還有就是點擊菜單欄後,在短暫的延遲(幾秒鐘)...命令,我不知道爲什麼。

相關問題