当前位置: 首页 > 教程 > Mac软件教程 > Mac文件处理软件Hammerspoon入门指南——与应用程序菜单交互

Mac文件处理软件Hammerspoon入门指南——与应用程序菜单交互

Hammerspoon mac这是一款macOS平台的自动化工具,可以帮助我们大大提高效率,适用于窗口管理、音乐播放、应用管理,甚至是网络请求……基本可以做到指哪打哪。应用场景:常用软件使用快捷键启动、高效快速的窗口管理、高效的音乐播放控制等。

与应用程序菜单交互

有时,自动化某事的唯一方法是与应用程序的GUI交互,这不是理想的,但通常需要完成某些事情。

为了说明这一点,我们将构建一个热键,在多个用户代理字符串之间循环Safari(即它如何向Web服务器标识自己)。要做到这一点,你需要有Safari浏览器Develop启用菜单,您可以通过勾选做Show Develop menu in menu barSafari→Preferences→Advanced

function cycle_safari_agents()
 hs.application.launchOrFocus("Safari")
 local safari = hs.appfinder.appFromName("Safari")

 local str_default = {"Develop", "User Agent", "Default (Automatically Chosen)"}
 local str_ie10 = {"Develop", "User Agent", "Internet Explorer 10.0"}
 local str_chrome = {"Develop", "User Agent", "Google Chrome — Windows"}

 local default = safari:findMenuItem(str_default)
 local ie10 = safari:findMenuItem(str_ie10)
 local chrome = safari:findMenuItem(str_chrome)

 if (default and default["ticked"]) then
 safari:selectMenuItem(str_ie10)
 hs.alert.show("IE10")
 end
 if (ie10 and ie10["ticked"]) then
 safari:selectMenuItem(str_chrome)
 hs.alert.show("Chrome")
 end
 if (chrome and chrome["ticked"]) then
 safari:selectMenuItem(str_default)
 hs.alert.show("Safari")
 end
end
hs.hotkey.bind({"cmd", "alt", "ctrl"}, '7', cycle_safari_agents)

我们在这里做的是首先启动Safari或将其带到前面(如果它已经运行)。这是任何菜单交互中的重要步骤 - 通常会禁用当前未关注的应用程序的菜单。

然后我们使用了对Safari本身的引用hs.appfinder.appFromName()。使用此对象,我们可以搜索可用的菜单项并与它们进行交互。具体来说,我们正在寻找三个用户代理字符串的当前状态Develop→User Agent。然后我们检查它们中的哪一个被勾选,然后选择下一个。

因此,反复按+ + + 7将在默认用户代理字符串,IE10用户代理和Chrome用户代理之间循环。每次,我们都会显示一个简单的屏幕警报,其中包含我们已循环访问的用户代理的名称。

相关文章