有没有办法让AppleScript访问右键单击停靠栏图标时出现的菜单项?
具体来说,这就是我想要做的事情:
我在MacOS X Snow Leopard上使用谷歌浏览器作为我的网络浏览器。我是键盘快捷键瘾君子,我使用QuickSilver为我能做的任何事情创建键盘快捷键。我做的最常见的事情之一是打开一个新的Web浏览器窗口。但是我经常使用Spaces来分区我正在处理的任务,当我打开带有QuickSilver触发器的Web浏览器或网页时,空格切换到我使用Chrome的最后一个空格并打开一个新标签,这通常是分散了我几个小时的注意力,因为它把我带到了不同的空间,从而完成了不同的任务。我可以通过右键单击Google Chrome图标并单击“新窗口”选项来解决此问题,该选项会在当前空间中打开一个新窗口。但是在AppleScript中,要对谷歌Chrome做任何事情,我要做的第一件事就是激活它,这让我回到原来的问题!任何人都可以想到这个问题的解决方案,AppleScript或其他?这已经成为一个严重的问题。回到我使用Firefox的时候,我通过改变一个偏好项来解决这个问题,这个项目是“总是在新窗口中打开弹出链接”或类似的东西,这是一种大锤方法,但它确实有用。我总是可以回到Firefox,但我想我先问我的问题。有想法的人吗?
答案 0 :(得分:14)
不确定您是否仍然感兴趣但是......
tell application "Dock"
activate
end tell
tell application "System Events"
tell process "Dock"
set frontmost to true
activate
tell list 1
perform action "AXShowMenu" of UI element "Google Chrome"
delay 1
repeat 4 times -- count number of items to the one you want
key code 126 -- up arrow
-- key code 125 -- down arrow
end repeat
delay 1
repeat 2 times
key code 36 -- return key
end repeat
end tell
end tell
end tell
答案 1 :(得分:3)
对于任何有兴趣的人,我认为我有一个合理的解决方案来解决这个问题,但它不涉及右键点击停靠栏图标。
首先,您必须在“系统偏好设置”的“空间”偏好设置面板中取消选中“切换到应用程序时,切换到打开应用程序窗口的空间”。然后我写了以下AppleScript:
tell application "Google Chrome" to activate
tell application "System Events"
tell process "Google Chrome"
try
set var to get name of window 1
on error
set var to "no window exists!!!"
end try
end tell
end tell
if var is "no window exists!!!" then
tell application "System Events"
tell process "Google Chrome"
click menu item "New Window" of menu "File" of menu bar 1
end tell
end tell
else
tell application "System Events"
tell process "Google Chrome"
click menu item "New Tab" of menu "File" of menu bar 1
end tell
end tell
end if
我使用Spark启动此AppleScript,这允许我为其分配快捷键。
它有点慢,特别是当系统处于负载状态时,但通常运行时间不会超过一秒左右。它还避免了我在Firefox中遇到的问题,我最终会在一天结束时打开几十个窗口。
答案 2 :(得分:3)
Chromium nightly版本现在包含AppleScript支持,这应该不久就会进入Chrome。这意味着你现在可以做到:
tell application "Chromium"
make new window
activate
end tell
答案 3 :(得分:1)
这是最受好评的答案的一种变体,这是一个接受菜单项名称的脚本版本,可让您避免进行任何计数。
此示例从Finder的停靠菜单中单击“转到文件夹...”。
tell application "Dock"
activate
end tell
tell application "System Events"
tell process "Dock"
set frontmost to true
activate
tell UI element "Finder" of list 1
perform action "AXShowMenu"
click menu item "Go to Folder…" of menu "Finder"
end tell
end tell
end tell
答案 4 :(得分:0)
或者,您也可以调用此隐藏选项:
defaults write com.apple.dock workspaces-auto-swoosh -bool NO
killall Dock
对我来说,它也具有积极的作用,使您在切换应用程序时不再在台式机上乱扔垃圾。只需使用Chrome作为活动应用即可执行Cmd + N。
顺便说一句,如果您将其设置为Fn + 1,Fn + 2等而不是⌃1,,2等,则可以直接转到空格。您必须在空格之前设置空格,然后才能在“键盘”中设置键盘快捷键- >快捷方式首选项。