我刚刚开始使用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膝上型计算机上运行此代码,并且如果在“return False”之前放置print语句,则返回错误0,则代码将更改为123(“文件名、目录名或卷标语法不正确”)。如果每次都从回调返回True并让它在所有窗口中循环,一切都会正常工作。
我的想法是,由于EnumWindows的C版本在回调返回false和出现真正错误时都返回false,所以包装器只能看到返回值,并且在返回值为false时假设最坏的结果?还是别的什么?
(使用Python2.7.9和pywin32 build 219)

最佳答案

我认为EnumWindows所做的正是它的文档所说的。从回调函数返回False将终止枚举。您的语句“包装器只能看到返回值”没有任何意义,因为根据文档,这个函数不应该返回任何内容。为什么不忘记分析返回值,并在try:except:block中包装对EnumWindows的调用,如果您想抑制异常。

关于python - 我不确定win32gui.EnumWindows是否正常运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29689025/

10-11 06:21