Python监听Windows10通知弹窗遇OSError(-2147023728)错误求助
Windows 10通知监听脚本报错[WinError -2147023728]的解决办法
这个错误的核心原因是UserNotificationListener需要系统级的通知访问权限,新笔记本未授权该权限,导致无法绑定监听事件。以下是具体解决步骤:
1. 手动开启通知访问权限
- 打开Windows设置 → 系统 → 通知和操作 → 下拉至底部找到「通知访问权限」
- 在列表中找到你的Python运行程序(或脚本对应的虚拟环境Python.exe),开启权限开关
2. 代码增加权限检查逻辑
在原有脚本中加入权限校验,避免直接报错,同时明确权限状态:
from winsdk.windows.ui.notifications.management import UserNotificationListener, UserNotificationListenerAccessStatus from winsdk.windows.ui.notifications import KnownNotificationBindings verification_number = None def handler(a, b): global verification_number unotification = a.get_notification(b.user_notification_id) if hasattr(unotification, "app_info"): text_sequence = unotification.notification.visual.get_binding(KnownNotificationBindings.get_toast_generic()).get_text_elements() it = iter(text_sequence) while True: next(it, None) if it.has_current: if "verification" in it.current.text: # 注:原代码拼写错误varification改为verification verification_number = it.current.text[-6:-1] print(verification_number) else: break else: pass listener = UserNotificationListener.get_current() # 检查并请求权限 access_status = listener.request_access_async().get_result() if access_status == UserNotificationListenerAccessStatus.ALLOWED: listener.add_notification_changed(handler) print("通知监听已启动") else: print(f"权限获取失败,状态: {access_status}") print("请先在系统设置中为当前Python程序开启通知访问权限")
注:原代码中"varification"是拼写错误,改为正确的"verification"能提高验证码识别准确率
3. 额外注意事项
- 如果使用虚拟环境运行脚本,要确保虚拟环境下的Python.exe被添加到通知权限列表
- 权限开启后,重启脚本或Python解释器才能生效
[WinError -2147023728]对应的系统提示"no element found",本质是权限未授权导致系统拒绝了监听绑定请求。
内容的提问来源于stack exchange,提问作者Kyungchan Choi
相关产品推荐
相关产品推荐

