7

当您右键单击停靠图标时,有什么方法可以让 AppleScript 访问出现的菜单项?

具体来说,这就是我想要做的:

我在 MacOS X Snow Leopard 上使用 Google Chrome 作为我的网络浏览器。我是一个键盘快捷键上瘾者,我使用 QuickSilver 为我能做的任何事情创建键盘快捷键。我做的最常见的事情之一是打开一个新的网络浏览器窗口。但是我经常使用 Spaces 来划分我当前正在处理的任务,当我使用 QuickSilver 触发器打开 Web 浏览器或网页时,Spaces 会切换到我使用 Chrome 的最后一个空间并打开一个新选项卡,这通常让我分心了好几个小时,因为它把我带到了一个不同的空间,从而完成了一项不同的任务。我可以通过右键单击 Google Chrome 图标并单击“新窗口”选项来解决此问题,这会在当前空间上打开一个新窗口。但是在 AppleScript 中,要使用 Google Chrome 做任何事情,我要做的第一件事就是激活它,这让我回到了原来的问题!谁能想到这个问题的解决方案,AppleScript 或其他?这已成为一个严重的问题。当我使用 Firefox 时,我通过更改“始终在新窗口中打开弹出链接”或类似内容的首选项解决了这个问题,这是一种大锤方法,但它确实有效。我总是可以回到 Firefox,但我想我会先在这里问我的问题。有任何想法的人吗?我总是可以回到 Firefox,但我想我会先在这里问我的问题。有任何想法的人吗?我总是可以回到 Firefox,但我想我会先在这里问我的问题。有任何想法的人吗?

4

5 回答 5

17

不知道你是否仍然感兴趣,但...

 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
于 2011-01-26T17:09:23.933 回答
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 时遇到的问题,我最终会在一天结束时打开几十个窗口。

于 2010-08-26T14:20:32.207 回答
3

Chromium 每晚构建现在包含 AppleScript 支持,这应该很快就会进入 Chrome。这意味着您现在可以执行以下操作:

tell application "Chromium"
    make new window
    activate
end tell
于 2010-08-27T00:23:05.307 回答
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
于 2020-04-16T00:45:43.563 回答
0

或者,您也可以调用此隐藏选项:

defaults write com.apple.dock workspaces-auto-swoosh -bool NO
killall Dock

对我来说,它还具有积极的影响,即您在切换应用程序时不再被扔在桌面上。只需使用 Chrome 作为活动应用程序执行 Cmd+N。

顺便说一句,如果您设置它而不是 ⌃1、⌃2 等,您可以直接使用 Fn+1、Fn+2 等进入空格。您必须先创建空格,然后才能在 Keyboard -> Shortcuts 首选项中设置键盘快捷键.

于 2019-05-29T10:40:13.733 回答