微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Hammerspoon 选择菜单项 参数:返回:注意:

如何解决使用 Hammerspoon 选择菜单项 参数:返回:注意:

我尝试使用 Hammerspoon 在 Firefox 中使用以下脚本打开一个新窗口:

function newWindow() 
    local app = hs.application.find("Firefox")
    
    print(hs.inspect.inspect(app))
    print(app:title())
    print(app:bundleID())

    local item = app:findMenuItem("File")
    
    print(item)
end

hs.hotkey.bind({'alt','ctrl','cmd'},'n',newWindow)

虽然脚本能够找到 Firefox,但它无法找到我正在寻找的菜单项。但与此同时,我可以使用 app:getMenuItems() 来检索整个菜单结构。

有没有人知道为什么或任何应用程序的工作示例?

我使用的是 MacOS Big Sur 11.2.3

解决方法

我认为您正在寻找的是 app:selectMenuItem() 方法:

function newWindow() 
    local app = hs.application.find("Firefox")
    app:selectMenuItem({"File","New Window"})
end
hs.hotkey.bind({'alt','ctrl','cmd'},'n',newWindow)

来自文档:

hs.application:selectMenuItem(menuitem[,isRegex]) -> true or nil

选择一个菜单项(即模拟点击菜单项)

参数:

  • menuitem - 要选择的菜单项,指定为字符串或表格。有关详细信息,请参阅 hs.application:findMenuItem() 的 menuitem 参数。
  • isRegex - 可选布尔值,默认为 false,仅当 menuItem 为字符串时才使用。如果设置为 true,menuItem 将被视为一个正则表达式而不是一个严格的字符串来匹配

返回:

如果找到并选择了菜单项,则为真,否则为 nil(例如,因为找不到菜单项)

注意:

根据所涉及的菜单项的类型,这将激活或勾选/取消勾选菜单项

http://www.hammerspoon.org/docs/hs.application.html#selectMenuItem

-- 编辑 --

为了避免多语言菜单结构,您还可以使用键盘快捷键打开新窗口:

function newWindow() 
    local app = hs.application.find("Firefox")
    hs.eventtap.keyStroke({'cmd'},'N',nil,app)
end
hs.hotkey.bind({'alt',newWindow)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。