我刚刚开始使用pywin32,所以我一开始就对它的工作方式有点粗略,但是win32gui.EnumWindows只是不喜欢从回调中返回False,我不知道为什么。例如,以下崩溃
from win32gui import EnumWindows
def derp(hWnd, lParam):
return False
EnumWindows(derp, 0)
带回溯
Traceback (most recent call last):
File "C:\--------\test5.py", line 7, in <module>
EnumWindows(ewp, 0)
error: (126, 'EnumWindows', 'The specified module could not be found.')
错误代码可能会有所不同,所以我认为它们与EnumWindows调用没有任何关系。例如,代码更改为123 (“文件名、目录名称或卷标签语法不正确”)。如果我在我的旧XP笔记本上运行它,如果我在‘返回False’之前放置了一个print语句,它将作为错误0返回。如果我每次都从回调中返回True,让它在所有窗口中循环,一切都很好。
我的想法是,由于C版本的EnumWindows在回调返回false时以及当某些事情真正出错时都返回false,所以包装器只能看到返回值,并且在出现错误时假定最坏的情况?或者是别的什么东西?
(使用python2.7.9和pywin32 build 219)
发布于 2015-04-17 04:19:25
我认为EnumWindows正在做的正是它的文档说它会做的事情。从回调函数返回False将终止枚举。您的语句“包装器只能看到返回值”没有任何意义,因为根据文档,这个函数不应该返回任何内容。为什么不忘了分析返回值,只需尝试结束对EnumWindows的调用:除了:阻止,如果您想要抑制异常。
https://stackoverflow.com/questions/29689025
复制相似问题