Hammerspoon hs.application:kill() 不可调用
Hammerspoon hs.application:kill() not callable
试图让 Hammerspoon 在 OS X 打开时退出(杀死)音乐应用程序。 (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
你的代码基本正确,只有一处错误。您使用了全局模块 hs.application
并试图从中调用对象方法 :kill()
。您必须首先实例化一个新对象才能调用它的 kill
方法。例如:hs.application.get(appName):kill()
.
但是,watcher 已经为您提供了调用该函数的应用程序对象 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 上测试
试图让 Hammerspoon 在 OS X 打开时退出(杀死)音乐应用程序。 (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
你的代码基本正确,只有一处错误。您使用了全局模块 hs.application
并试图从中调用对象方法 :kill()
。您必须首先实例化一个新对象才能调用它的 kill
方法。例如:hs.application.get(appName):kill()
.
但是,watcher 已经为您提供了调用该函数的应用程序对象 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 上测试