mac os 窗口不定时失焦的问题

2023-09-24 23:17:15 +08:00
 chonger
这段时间不知道什么软件有冲突,总是出现窗口莫名之妙失去焦点的问题,尤其是打字的时候,搜索了一下,发现以下代码,但不知道怎么运行,有朋友能教我一下吗?
#!/usr/bin/python
try:
from AppKit import NSWorkspace
except ImportError:
print("Can't import AppKit -- maybe you're running python from brew?")
print("Try running with Apple's /usr/bin/python instead.")
exit(1)

from datetime import datetime
from time import sleep

last_active_name = None
while True:
active_app = NSWorkspace.sharedWorkspace().activeApplication()
if active_app['NSApplicationName'] != last_active_name:
last_active_name = active_app['NSApplicationName']
print('%s: %s [%s]' % (
datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
active_app['NSApplicationName'],
active_app['NSApplicationPath']
))
sleep(1)
986 次点击
所在节点    macOS
2 条回复
jasonyang9
2023-09-25 06:31:38 +08:00
这段代码会每秒检测一次并在活动 App 切换时输出当前时间戳和 App 名字+路径
Wxh16144
197 天前
同: https://s.v2ex.com/t/743899
Apple 社区: https://discussionschinese.apple.com/thread/254974399


今天( 2025/02/26 )我也遇到了,将软件一个一个的退掉发现还是存在。
虽然可以重启解决,但是不死心的我一定要找到问题,然后就 google 到了这段代码。


我的是 macOS Sequoia 15.2, 没有 python 命令,取而代之的是 python3

1. 手动手动复制这段代码。
2. 打开终端,随便找一个目录
3. 运行 `pbpaste > test.py` 将复制的代码写入一个 test.py 文件
4. `cat test.py` 查看文件内容是否正确 [可选]
5. python3 test.py 执行后查看终端输入那个软件抢夺了焦点
6. 然后在活动监视器找到软件强制退出即可


根据官网社区回复,在第 5 步可能会报错让其安装某个依赖。回复使用的是 pip

实际上 macOS 最新的是 pip3. 具体看这里: https://stackoverflow.com/a/42937384/11302760

使用 pip3 代替安装 `pip3 install --upgrade --force-reinstall PyObjC PyObjC-core` 可能还会遇到 python 报错。提示推荐使用虚拟环境(我纯 py 小白,所以都是翻译来的)


在你当前目录创建虚拟环境命令
第一步 `python3 -m venv $PWD`
第二步 `source $PWD/bin/activate`

然后再执行前面的 pip3 安装。

最后再重复一开始的 5 和 6 步骤

这是我最终 debug 出来抢夺焦点的软件日志

2025-02-26 13:53:12: BetterAndBetter [/Applications/BetterAndBetter.app]
2025-02-26 13:53:13: Google Chrome [/Applications/Google Chrome.app]
2025-02-26 13:53:14: BetterAndBetter [/Applications/BetterAndBetter.app]
2025-02-26 13:53:15: Google Chrome [/Applications/Google Chrome.app]
2025-02-26 13:53:16: BetterAndBetter [/Applications/BetterAndBetter.app]

罪魁祸首和官网社区提到的 ishot 出至同一个软件公司,无了个大语
最终在活动监视器中将

BetterAndBetterHelper
BetterAndBetter

都强制退出就好了~

以上,希望对后面的人有一些帮助。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/976769

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX