2013-05-21 54 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 

还有就是点击菜单栏后,在短暂的延迟(几秒钟)...命令,我不知道为什么。

相关问题