0

我正在尝试在 dll (user32.dll)中调用函数ChangeWindowMessageFilter

dlluser32 = ctypes.cdll.LoadLibrary('user32.dll')
dlluser32.ChangeWindowMessageFilter(0x0233, 1)
dlluser32.ChangeWindowMessageFilter(0x0048, 1)
dlluser32.ChangeWindowMessageFilter(0x0049, 1)

结果是:

ValueError: Procedure called with not enough arguments (16 bytes missing) or wrong calling convention

如何正确接听电话?我想在窗口中运行时使用此功能为我的应用程序启用拖放功能,如果它不起作用,还有其他方法吗?

4

1 回答 1

1

您必须设置呼叫转换:

from ctypes.wintypes import BOOL, DWORD, UINT

dlluser32 = ctypes.cdll.LoadLibrary('user32.dll')
ChangeWindowMessageFilter = dlluser32.ChangeWindowMessageFilter

# BOOL WINAPI ChangeWindowMessageFilter(_In_  UINT message, _In_  DWORD dwFlag);
ChangeWindowMessageFilter.restype = BOOL
ChangeWindowMessageFilter.argtypes = (UINT, DWORD)

# Now you can call it there...
于 2012-12-14T07:49:29.783 回答