试图让Hammerspoon在OS中的音乐应用程序打开时退出(杀死)。( Apple安装此应用程序的方式使其很难更改,只要连接到蓝牙设备,它就会启动。基本上,令人讨厌的臃肿软件。)所以,我从Hammerspoon的“入门”页面https://www.hammerspoon.org/go/中抄袭了这篇文章。
function applicationWatcher(appName, eventType, appObject)
if (eventType == hs.application.watcher.launched) then
if (appName == "Music") then
hs.application:kill()
end
end
end
appWatcher = hs.application.watcher.new(applicationWatcher)
appWatcher:start()这正确地响应了正在启动的音乐应用程序,但它错误如下...ERROR: LuaSkin: hs.application.watcher callback: /Users/seancamden/.hammerspoon/init.lua:142: method 'kill' is not callable (a nil value)
如何使此方法可调用?或者,这样做的正确方法是什么?
https://www.hammerspoon.org/docs/hs.application.watcher.html https://www.hammerspoon.org/docs/hs.application.html#kill
发布于 2021-08-06 01:33:31
你的代码非常正确,只有一个错误。您使用了全局模块hs.application,并试图从它调用一个对象方法:kill()。您必须首先实例化一个新对象才能调用它的kill方法。例如:hs.application.get(appName):kill()。
但是,观察器已经为您提供了调用函数的应用程序对象appObject。所以appObject:kill()就是你要找的东西。
function applicationWatcher(appName, eventType, appObject)
if (eventType == hs.application.watcher.launched) then
if (appName == "Music") then
appObject:kill()
end
end
end
appWatcher = hs.application.watcher.new(applicationWatcher)
appWatcher:start()在MacOS BigSur上进行了测试
https://stackoverflow.com/questions/68594282
复制相似问题