Dvel
V2EX  ›  问与答

请问怎么监测 MacBook 合盖了,然后执行一个小脚本呀?

  •  
  •   Dvel · Dec 19, 2020 · 1715 views
    This topic created in 1996 days ago, the information mentioned may be changed or developed.
    import psutil
    
    for pid in psutil.pids():
        name = psutil.Process(pid).name()
        if name == 'QQ jietu plugin' or name == 'QQ':
            print(pid, name)
            psutil.Process(pid).terminate()
    

    比如这样一个小脚本,在合盖的时候执行一下,关掉 QQ 。
    因为我无数次睡前忘了关掉 QQ,刚要睡着 QQ 就他妈响起了登录声。

    Supplement 1  ·  Dec 19, 2020
    解决了,brew 装了一个 sleepwatcher,这个可以在 sleep 和 wakeup 的时候执行一些脚本。
    2 replies    2020-12-19 02:19:08 +08:00
    geelaw
        1
    geelaw  
       Dec 19, 2020 via iPhone
    通常状况下合盖后会进入睡眠状态,我以为 macOS 进入睡眠之后 app 就不运行了?

    可能 1 是程序阻止了睡眠,这样的话就不能检测睡眠事件(因为根本不发生)。
    可能 2 是睡眠期间程序偶尔可以运行,此时可以检测即将睡眠的事件并进行操作。

    另一种思路是检测目前有几个显示器,如果显示器的数目降低到 0 则执行程序。

    不宜检测是否合盖,因为连接外置显示器、键鼠、电源时,合盖不应导致活动暂停。
    ynyounuo
        2
    ynyounuo  
       Dec 19, 2020
    ioreg -r -k AppleClamshellState
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2893 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 05:02 · PVG 13:02 · LAX 22:02 · JFK 01:02
    ♥ Do have faith in what you're doing.