使用SetForegroundWindow遇到报错的解决方式
2025年2月19日 - 由Bo 0 评论 121 阅读
在直接调用win32gui.SetForegroundWindow, 或者使用pywinauto的set_focus时(实际还是会走到SetForegroundWindow这里来),在经过一段时间的运行后,会遇到提示错误(0, 'SetForegroundWindow', 'No error message is available')
有两种方式处理
- 因为windows系统不允许过于频繁的将应用的窗口置前,因此当操作过多时便会导致错误。可以通过修改注册表来取消这个限定,运行regedit打开注册表,路径为HKEY_CURRENT_USER\Control Panel\Desktop,此时会看到一个名为ForegroundLockTimeout的DWORD(32位)值,如果没有就新建,有的话它的值应该是Decimal为200000,修改为0.
- 或者也可以通过程序里做出类似切换的行为,就增加一个键盘事件,便不会产生该错误了。
import win32gui, win32com.client shell = win32com.client.Dispatch("WScript.Shell") shell.SendKeys('%') # alt win32gui.SetForegroundWindow(window)