Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python ctypes.windell的使用有效,但没有结果_Python_Winapi_Dll - Fatal编程技术网

python ctypes.windell的使用有效,但没有结果

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

正在尝试使用win dll操作打开的窗口

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函数。我不打算回答你们现在在评论中提出的其他问题。我回答了你问的问题。如果你不满意,我很抱歉。我很抱歉我的疏忽,你帮了我这么多!我会在新的帖子里问更多的问题。