Отправка нажатия клавиш приложения с помощью "SendMessage" (vb.net)
пока у меня все ручки захвата и GUI настройки. Я в тупике относительно того, как выполнить фактический шаг.
У меня есть этот код:
SendMessage(New IntPtr(CurrentHandle), WHAT,GOES,HERE?)
Я смотрел на: http://msdn.microsoft.com/en-us/library/ms644950 (VS.85).aspx и http://msdn.microsoft.com/en-us/library/ms644927(v=VS.85).aspx#system_defined
однако ни один из них не дает большую часть метода "пример кода", который мне нужно узнать, как это сделать. Мне просто нужно отправить ключевые события, такие как нажатие "/" или "W" и т. д. Нет, я не могу использовать для этого sendkeys.
спасибо, если вы можете помочь!
2 ответов
чтобы имитировать нажатие клавиши, вам нужно будет имитировать событие keydown и keyup, которое будет тем, что вы укажете в поле Msg. (Используйте 256 для keydown и 257 для keyup). wParam и lParam специфичны для сообщений, поэтому для keyup и keydown wParam будет ключевым кодом (видите эту страницу для шестнадцатеричных кодов) и lParam содержит другую различную информацию (видите эту страницу). В vb.net вы можете использовать int32 для lParam. Например, вы можете использовать 0 для keydown и 65539 для keyup.
Ex:
SendMessage(New IntPtr(CurrentHandle), 256, KEYCODE, 0) - Keydown
SendMessage(New IntPtr(CurrentHandle), 257, KEYCODE, 65539) - Keyup
http://msdn.microsoft.com/en-us/library/ms644950 (v=против 85).aspx
LRESULT WINAPI SendMessage(
__in HWND hWnd,
__in UINT Msg,
__in WPARAM wParam,
__in LPARAM lParam
);
hWnd-это дескриптор окна для отправки сообщения. Msg-тип отправляемого сообщения. WParam и lParam по существу являются "информацией". Точное использование будет зависеть от сообщения, которое вы отправляете.
в какой ситуации вам нужно использовать SendMessage вместо SendKeys для эмуляции нажатий клавиш? Я использовал SendMessage раньше, но это всегда было для мыши движения. .SendKeys () должен отправлять любое нажатие клавиши в активное окно.
Public Shared Sub ActivateWin()
Dim Win As Process = Process.GetProcessesByName("myWindow").First
AppActivate(Win.Id)
End Sub
я использовал выше непосредственно перед SendKeys (), и он всегда работал.
Если это не работает, или вы хотите использовать SendMessage для использования SendMessage; документация для сообщения WM_KEYDOWN-это то, что вам нужно. http://msdn.microsoft.com/en-us/library/ms646280 (v=против 85).aspx
вы будете манипулировать битами для создания правильное значение lParam.