首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不可调用Hammerspoon hs.application:kill()

不可调用Hammerspoon hs.application:kill()
EN

Stack Overflow用户
提问于 2021-07-30 16:30:12
回答 1查看 84关注 0票数 0

试图让Hammerspoon在OS中的音乐应用程序打开时退出(杀死)。( Apple安装此应用程序的方式使其很难更改,只要连接到蓝牙设备,它就会启动。基本上,令人讨厌的臃肿软件。)所以,我从Hammerspoon的“入门”页面https://www.hammerspoon.org/go/中抄袭了这篇文章。

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-06 01:33:31

你的代码非常正确,只有一个错误。您使用了全局模块hs.application,并试图从它调用一个对象方法:kill()。您必须首先实例化一个新对象才能调用它的kill方法。例如:hs.application.get(appName):kill()

但是,观察器已经为您提供了调用函数的应用程序对象appObject。所以appObject:kill()就是你要找的东西。

代码语言:javascript
复制
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上进行了测试

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68594282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档