-
Warner (23.05.09 04:44) [0]Нужно в эмулировать нажатие комбинации ctrl+<стрелка влево> в окне чужого приложения. Делаю это таким кодом:
SendMessage(h, WM_SYSCOMMAND, SC_HOTKEY, h); // h - окно нужного приложения
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event(VK_LEFT, 37, 0, 0);
keybd_event(VK_LEFT, 37, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
При этом контрол нажимается а стрелка нет. Причем если в шоткате вместо стрелки буква (напр. ctrl+R), то код работает нормально. Подскажите, в чем моя ошибка? Или быть может есть какие-то альтернативные константы или коды для обозначения таких сочетаний клавиш? -
KilkennyCat © (24.05.09 01:36) [1]
> в чем моя ошибка?
37
Ты уверен, что хочешь использовать аппаратный код? И что делаешь это правильно? -
KilkennyCat © (24.05.09 01:39) [2]И вообще:
keybd_event Function
Windows NT/2000/XP/Vista:This function has been superseded. Use SendInput instead. -
Warner (24.05.09 01:45) [3]
> Ты уверен, что хочешь использовать аппаратный код?
а как еще это можно сделать?
> И что делаешь это правильно?
если в шоткате буквы вместо стрелок, то все получается, поэтому склонен думать что это делается именно так -
KilkennyCat © (24.05.09 02:34) [4]
> если в шоткате буквы вместо стрелок
буквы не требуют KEYEVENTF_EXTENDEDKEY -
KilkennyCat © (24.05.09 02:35) [5]http://msdn.microsoft.com/en-us/library/ms646304(VS.85).aspx