Re[10]: WM_KEYDOWN на две клавиши
От: Alexmoon Украина  
Дата: 23.06.03 11:04
Оценка:
Здравствуйте, Аноним, Вы писали:

A>>Если все таки lParam не даст желаемого результата, то тебе поможет раздел — Keyboard Input Functions:


A>>GetKeyState и все тому подобное.


Тогда можно сделать и keybd_event, но не забывай о том, что эмуляция реального нажатия и на это сообщение срегагирует то окно, которое находится в фокусе. Чтобы без визуализации временно передать фокус другому окну в другом потоке, так наверное будет правильнее сказать, чем приложении, поскольку окно это собственность потока, тебе нужно сделать AttachThreadInput(my_dwthread, remote_dwthread, true), потом сделать SetFocus(need_hWnd), что передаст ему фокус IO, но не визуальный, потом перед тем как нажимать клавиши, чтобы убдиться в их срабатывании ты вызови WaitForInputIdle(remote_hProcess, 100), 100 чтобы себя не повесить и если не будет возвращать 0, то после нескольких попыток ты будешь знать, что поток висит, а если все таки вернет ноль, то генерируй необходимый тебе keybd_event и на всякий случай, чтобы дождаться его обработки, если конечно нужно или масса других вариантов синхронизации, тот же WaitForInput..., после чего делаешь смело SetFocus своему окну и напослед разъединяешь очереди обоих потоков AttachThreadInput(my_dwthread, remote_dwthread, false) и по моему это все не должно отличаться от реального сценария по функциональности. За неточности извини. Сам еще не делал. Придумывал на лету и по памяти.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.