Я хочу вызвать собственную Windows функцию GetMessageA
, которая находится в user32.dll
. Я могу извлечь и вызвать функцию следующим образом:
https://godoc.org/golang.org/x/sys/windows
dllUser32 := windows.MustLoadDLL("user32.dll")
procGetMessage := dllUser32.MustFindProc("GetMessageA")
r, _, _ := procGetMessage.Call(&msg, 0, 0, 0)
Однако функция GetMessageA
ожидает указатель на MSG
структура (см. Ниже), которая нигде не определена в golang.org/x/sys/windows
.
Как я могу сам определить такую MSG
структуру, такую, что макет памяти структуры - это то, что Windows ожидает?
Если MSG
уже где-то определен, где я могу его найти?
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getmessage
BOOL GetMessageA(
LPMSG lpMsg,
HWND hWnd,
UINT wMsgFilterMin,
UINT wMsgFilterMax
);
https://docs.microsoft.com/en-gb/windows/win32/api/winuser/ns-winuser-msg
typedef struct tagMSG {
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
DWORD lPrivate;
} MSG, *PMSG, *NPMSG, *LPMSG;