В ctypes у меня есть
TBButton.ptr(ctypes.UInt64("0x1e677e60")
Это эквивалентно aButton.address()
в этой строке кода:
var rez = SendMessage(hToolbar, 0x417 /** TB_GETBUTTON **/, 1, aButton.address());
Когда я запускаю этот код, я получаю сообщение об ошибке:
Исключение: ожидаемый тип intptr_t, получен TBButton.ptr(ctypes.UInt64("0xaa4eb20"))
Так это потому, что в моем SendMessage
определении у меня есть это:
var SendMessage = user32.declare('SendMessageW', ctypes.winapi_abi, ctypes.intptr_t,
ctypes.voidptr_t, // HWND
ctypes.uint32_t, // MSG
ctypes.uintptr_t, // WPARAM
ctypes.intptr_t // LPARAM
);
Итак, мой вопрос: каков тип TBButton.ptr(ctypes.UInt64("0x1e677e60")
, чтобы я мог изменить LPARAM
в определении SendMessage
на этот тип.
Или альтернативно: возможно ли сделать это intptr_t
? Что-то вроде ctypes.intptr_t(aButton.address())
, которое я пробовал, это не работает.