Конференция "WinAPI" » Эмулирование нажатия комбинации клавиш CTRL+<стрелка> [D7, WinXP]
 
  • 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]
 
Конференция "WinAPI" » Эмулирование нажатия комбинации клавиш CTRL+<стрелка> [D7, WinXP]
Есть новые Нет новых   [134434   +27][b:0][p:0.001]