У меня есть приложение, которому я хочу отправить комбинацию клавиш Ctrl-C. Я пытаюсь использовать SendMesssage
, но знаю, что приложение проверяет комбинацию Ctrl-C, используя GetKeyState
и GetAsyncKeyState
, поэтому SendMessage
довольно бесполезно... Как я могу отправить < kbd>Ctrl-C в это окно без вызова SetForegroundWindow(hWnd)
? Мне нужно решение, которое работает без фокусировки/переноса в окно.
Я временно использую этот код (но требует внимания):
SetForegroundWindow(hWnd);
SendKeys.SendWait("^(c)");
Я использую C#, но код C++ в порядке.
SendMessage
с некоторымиWM_KEY*
? - person chris   schedule 29.08.2013GetKeyState
, он должен обнаружить простойSendInput
. - person chris   schedule 29.08.2013GetKeyState
не требует, чтобы ваше окно было сфокусировано. Вот почему отправка его так же, как пользователь, нажимающий его, должна работать, если приложение используетGetKeyState
. - person chris   schedule 29.08.2013GetAsyncKeyState
(асинхронным, потому что у меня нет цикла сообщений, но почти то же самое). Мой основной поток ждет три секунды и используетSendInput
для отправки пробела. Мой другой поток определенно ловит его, когда окно не сфокусировано. - person chris   schedule 29.08.2013GetKeyState
без этого. - person chris   schedule 29.08.2013