Здравствуйте, muller, Вы писали:
M>Мне необходимо осуществить одновременное нажатие нескольких клавиш в окне другого процесса. Например, A+X или Alt+J и так далее. Трудность состоит в реализации параллельности нажатия клавиш, т.к. обработка GetMessaage b PeekMessage идет последовательно. Вот. M>Буду признателен за подсказки...
Для начала нужно разобраться с относительностью одновременности....
Если создать простенькое оконное приложение Win32 и натравить на него Spy
можно ставить очень интересные опыты....
Например нажав и удерживая A & X(в нашем окне) мы получаем примерно следующее
WM_KEYDOWN A
WM_CHAR A
WM_KEYDOWN S
WM_CHAR S
WM_KEYDOWN S
WM_CHAR S
WM_KEYDOWN S
WM_CHAR S
WM_KEYDOWN S
WM_CHAR S
WM_KEYUP S
WM_KEYUP A
Простите что не перечислил все параметры (spy их копировать не дает)
Это к разговору об одновременности — одновременно ничего не происходит..
Если окно приложения определяет "одновременно" нажатые клавиши проверяя WM_KEYDOWN
и WM_KEYUP (так делается во всех играх:1)создается массив на WM_KEYDOWN срабатывает
key[wParam]=true а на WM_KEYUP key[wParam]=false 2)Все значения в key равные true —
это нажатые клавиши.....
Если твое окно проверяет это так, то CTRL+С будет выглядеть так
PostMessage(Windows,WM_KEYDOWN,0x11,0x1D0001);
PostMessage(Windows,WM_KEYDOWN,0x43,0x2E0001);
PostMessage(Windows,WM_KEYUP,0x43,0xC02E0001);
PostMessage(Windows,WM_KEYUP,0x11,0xC01D0001);
В некоторых программах(игровых в основном) одновре