![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Эмулирование нажатия комбинации клавиш CTRL+<стрелка> [D7, WinXP]
Warner © (2009-05-23 04:44:00)Нужно в эмулировать нажатие комбинации 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 (2009-05-24 02:35:00) [1]http://msdn.microsoft.com/en-us/library/ms646304(VS.85).aspx
KilkennyCat (2009-05-24 02:34:00) [2]
> если в шоткате буквы вместо стрелок
буквы не требуют KEYEVENTF_EXTENDEDKEY
Warner (2009-05-24 01:45:00) [3]
> Ты уверен, что хочешь использовать аппаратный код?
а как еще это можно сделать?
> И что делаешь это правильно?
если в шоткате буквы вместо стрелок, то все получается, поэтому склонен думать что это делается именно так
KilkennyCat (2009-05-24 01:39:00) [4]И вообще:
keybd_event Function
Windows NT/2000/XP/Vista:This function has been superseded. Use SendInput instead.
KilkennyCat (2009-05-24 01:36:00) [5]
> в чем моя ошибка?
37
Ты уверен, что хочешь использовать аппаратный код? И что делаешь это правильно?