python ctypes.windell的使用有效,但没有结果
正在尝试使用win dll操作打开的窗口python ctypes.windell的使用有效,但没有结果,python,winapi,dll,Python,Winapi,Dll,正在尝试使用win dll操作打开的窗口 import ctypes user32 = ctypes.WinDLL ("user32") print(user32.FindWindowExA(None,None,None,"FileZilla")) 它打印0,但FileZilla现在正在运行。 相同的库在Java中与Native.loadLibrary一起工作。 Lib似乎已加载,因为它在使用错误的参数数调用FindWindowExA时会打印错误。该代码将在32位Python下工作,但不会在6
import ctypes
user32 = ctypes.WinDLL ("user32")
print(user32.FindWindowExA(None,None,None,"FileZilla"))
它打印0,但FileZilla现在正在运行。
相同的库在Java中与Native.loadLibrary一起工作。
Lib似乎已加载,因为它在使用错误的参数数调用FindWindowExA时会打印错误。该代码将在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"))
谢谢这很有效。但是首先,我注意到您使用FindWindowExW(有效)而不是FindWindowExA(无效)-有什么区别?其次,如果不这样做,假设应该关闭找到的窗口:user32.CloseWindow(user32.FindWindowExW(None,None,None,“FileZilla”))CloseWindow只会成功地最小化。现在找到DestroyWindow函数,但它没有效果。我解释了为什么在答案中使用W函数。我不打算回答你们现在在评论中提出的其他问题。我回答了你问的问题。如果你不满意,我很抱歉。我很抱歉我的疏忽,你帮了我这么多!我会在新的帖子里问更多的问题。