Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Эмулирование нажатия комбинации клавиш 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
Ты уверен, что хочешь использовать аппаратный код? И что делаешь это правильно?


Наверх

Титульная страница Поиск, карта сайта Написать письмо