Я настоятельно рекомендую вам использовать RegisterHotKey вместо GetAsyncKeyState.Таким образом, вам не понадобится ни цикл, ни таймер, что делает ваше приложение более надежным и отзывчивым.
Чтобы имитировать нажатия клавиш в другом приложении / окне, вам необходимо:
A) Сфокусируйтесь на определенном окне:
BringWindowToTop(hwnd);
SetForegroundWindow(hwnd);
SetFocus(hwnd);
B) Отправьте события keydown + keyup:
keybd_event(keycode, 0, KEYEVENTF_KEYDOWN, 0);
keybd_event(keycode, 0, KEYEVENTF_KEYUP, 0);
Этого должно быть достаточно.Однако имейте в виду, что пользователь может уже нажимать одну из клавиш, которые вы имитируете , поэтому результат может оказаться не таким, как вы ожидали.Чтобы избежать этого, вам нужно проверить, нажимаются ли уже клавиши (используйте здесь GetAsyncKeyState), а затем отправить команду прежде, чем делать B .
ОБНОВЛЕНИЕ:
Если вы хотите отправить нажатия клавиш в любое приложение, которое в данный момент находится на переднем плане (в фокусе), вы можете пропустить A .