Я пишу программу на C # для отправки кликов из одного окна в другое. Я использую SendMessage и PostMessage из winapi. SendMessage прекрасно работает для событий клавиатуры, но когда я пытаюсь использовать его для отправки событий мыши, он всегда отправляет координаты мыши 0,0. С помощью spy ++ я могу проверить, что приложение получает события, но значения x и y равны (0,0), и приложение думает, что мышь находится вне экрана NCHITTEST = NOTCLIENT.
Код выглядит следующим образом:
PostMessage(appWin, (int)WMessages.WM_MOUSEMOVE, 0, MakeDword(300, 200));
Где PostMessage объявлено как:
[DllImport("user32.dll", EntryPoint = "PostMessageA", SetLastError = true)]
protected static extern bool PostMessage(IntPtr hwnd, uint Msg, long wParam, long lParam);
Где appWin - дескриптор окна (проверено с помощью spy ++, что оно получает события).
Окно не имеет элементов управления вообще.
Я также попробовал несколько макросов MakeLParam, MakeDword, сделал это вручную и т. Д.
Я использую Windows7.
Я провел большую часть прошлой ночи / этим утром, пытаясь найти проблему, но я не смог. Хотя в Интернете много сообщений о Post / SendMessage, мне удалось найти только то, где возникла подобная проблема, но ответов не было.
Чтобы подвести итог проблемы:
Кто-нибудь знает, почему SendMessage будет отправлять правильное сообщение в окно приложения, но вместо того, чтобы передавать ему координаты x и y, всегда передавая (0,0)?
Спасибо!