3

我将 Applescript 与Alfred结合使用来提供键盘快捷键,用于在Billings中启动和停止计时器。这对于我跟踪我的自由职业者工作非常有用。

这是我正在使用的代码:

tell application "Billings" to activate
tell application "System Events"
    tell process "Billings"
        tell menu bar 1
            tell menu bar item "Slips"
                tell menu "Slips"
                    if menu item "Start Timer" exists then
                        click menu item "Start Timer"
                    else
                        click menu item "Stop Timer"
                    end if
                end tell
            end tell
        end tell
        keystroke "h" using {command down}
    end tell
end tell

我将它弹出到一个 Alfred 扩展集以使用 CTRL+ALT+CMD+T 激活。

不幸的是,它有点笨拙。昨天之前我从来没有接触过Applescript,所以我担心我的排骨有点差。比林斯窗口暂时弹出到前台,然后再次隐藏。如果碰巧在键盘上按下除 H 以外的任何修饰键,它也不会隐藏。

因此:

  • 有没有更好的方法来调用比林斯,这样它就不会弹出?
  • 如果没有,是否有更好的方法来隐藏它并返回到先前具有焦点的应用程序。

为清楚起见进行编辑: Billings 是一个 OSX 自由时间跟踪和发票包。我使用计时器来跟踪我在每项任务上花费了多少时间,这样我就可以准确地向客户收费。我个人觉得非常有用。计时器(针对我正在处理的当前项目)显示在菜单栏中,可以通过单击鼠标进行切换。理想情况下,当比林斯不在前台时,我可以使用键盘快捷键轻松启动和停止它,但是没有内置功能可以这样做。它看起来像这样:计时器的图片

4

2 回答 2

4

这是将应用程序保持在后台的解决方案。

-- no activate
tell application "System Events"
    tell group 1 of group 2 of window "Billings" of process "Billings"
        perform action "AXPress" of (get first button whose its name ends with " Timer")
    end tell
end tell

--

如果它不起作用,这里是隐藏应用程序而不使用快捷方式的解决方案

activate application "Billings"
tell application "System Events"
    tell process "Billings"
        tell menu "Slips" of menu bar item "Slips" of menu bar 1
            click (get first menu item whose its name ends with " Timer")
        end tell
        set visible to false
    end tell
end tell
于 2012-05-17T19:41:50.810 回答
2

这是另一种方法:

tell application "System Events" to set xxx to (1st process whose frontmost is true)
activate application "Billings"
tell application "System Events"
    tell process "Billings"
        click menu item 7 of menu 1 of menu bar item 7 of menu bar 1
        if visible then
            set visible to false
        end if
    end tell
end tell
set frontmost of xxx to true
于 2012-05-17T15:55:48.233 回答