2012-08-15 73 views
0

使用ChangeWindowMessageFilter從user32.dll中我嘗試調用函數ChangeWindowMessageFilter在DLL(user32.dll中不能在Python

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 

我如何接聽電話? 我想用這個函數在窗口中運行時爲我的應用程序啓用拖放功能,如果它不起作用,有另一種方法可以做到這一點?

回答

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...