如何解决使用 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 举报,一经查实,本站将立刻删除。