python ctypes.WinDLL用法有效,但没有结果

时间:2017-07-25 14:42:27

标签: python winapi dll

尝试使用win dll来操作打开的窗口。

import ctypes
user32 = ctypes.WinDLL ("user32")
print(user32.FindWindowExA(None,None,None,"FileZilla"))

它打印0但FileZilla现在正在运行。 相同的库在Java中使用Native.loadLibrary。 Lib似乎被加载了,因为它在使用错误的args数量调用FindWindowExA时会输出错误。

1 个答案:

答案 0 :(得分:0)

该代码将在32位Python下运行,但不能在64位Python下运行。原因是您需要定义参数的类型。你可以通过运气而不是设计来避免在32位进程中这样做。

此外,在我看来,似乎没有必要将自己局限于ANSI接口。您也可以养成使用Win32原生Unicode接口的习惯。

所有这些导致了这一点:

import ctypes
from ctypes import wintypes

user32 = ctypes.WinDLL("user32")
user32.FindWindowExW.restype = wintypes.HWND
user32.FindWindowExW.argtypes = [wintypes.HWND, wintypes.HWND, wintypes.LPCWSTR, 
    wintypes.LPCWSTR]
print(user32.FindWindowExW(None, None, None, "FileZilla"))