我刚开始使用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调用无关。例如,如果我在旧的XP笔记本电脑上运行它,代码会变为123("文件名、目录名或卷标语法不正确。"),如果我把print语句放在"return False"之前,它会返回错误0。如果我每次都从回调中返回True,并让它在所有窗口中循环,一切都会很好。
我的想法是,由于C版本的EnumWindows在回调返回false和时都返回false,所以包装器只能看到返回值,并在返回值为false时假设最坏的情况?还是别的什么?
(使用python 2.7.9和pywin32 build 219)
我认为EnumWindows正在做它的文档所说的事情。从回调函数返回False将终止枚举。您的语句"包装器只能看到返回值"没有任何意义,因为根据文档,该函数不应该返回任何内容。如果您想抑制异常,为什么不忘记分析返回值,只需将对EnumWindows的调用包装在try:axcept:block中呢。