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

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

Hot Keys


Katrin ©   (2003-10-06 11:57:00) 

Возникла проблема - у меня есть приложение, о котором я знаю только то, какими горячими клавишами оно управляется, ни коммандной строки, ничего. необходимо включить его функциональность в мой проект. Подскажите, каким образом можно управлять приложением по hot keys?


Katrin   (2003-10-06 16:54:00) [1]

ок, спасибо за помощь огромное


Игорь Шевченко   (2003-10-06 16:43:00) [2]

Katrin © (06.10.03 16:39)

Да, на каждую кнопку (Alt(VK_MENU) и F1(VK_F1)) по своему сообщению WM_KEYDOWN и по своему WM_KEYUP - итого четыре вызова


Katrin   (2003-10-06 16:39:00) [3]

Большое спасибо
Если я не ошибаюсь, то PostMessage необходимо вызывать для одновременного нажатия Alt-F1 два раза


Игорь Шевченко   (2003-10-06 16:12:00) [4]

Если вам известно имя и класс нужного окна вашего приложения, то будь оно свернутым или невидимым, можно найти его Hwnd и послать ему сообщения (WM_KEYDOWN, WM_KEYUP) функцией PostMessage.


Katrin   (2003-10-06 15:53:00) [5]

Активное приложение - ну как, если у меня открыто два IE, я нажму F1 то отреагирует только активное приложение. Может быть мы действительно по-разному понимаем hot key.
Окна взялись из того, что приложение-то я буду запускать (как называется файл я знаю :)). Очень бы хотелось скрыть само окно приложения от пользователя и показывать ему только выдаваемые по нажатию горячей клавиши диалоги открытия, сохранения файлов и т.п. Но это не так важно - пусть даже будет свернутым. Однако комбинация клавиш, типа Alt-F1 может в принципе активизировать и другое приложение, а мне надо чтобы она адресовалась только открытому мною приложению.


Игорь Шевченко   (2003-10-06 15:36:00) [6]

Если приложение зарегистрировало горячую клавишу, то все зависимости от того, активно оно или нет, оно это нажатие получит. Например, Ctrl+Shift+Esc. Боюсь, что мы с вами по-разному понимаем понятие "горячая клавиша".

> А как послать определенному окну? Причем желательно чтобы
> было это окно невидимым для юзера или хотя бы свернутым.

Насколько я помню, в вопросе было написано про некое приложение, о котором ничего не известно ? Откуда взялись окна, да еще и невидимые ? :)


> А в вашем примере нажатие Alt это где описано

VK_MENU это и есть клавиша Alt


Katrin   (2003-10-06 15:12:00) [7]

На это сообщение отреагируют все активные приложения. А как послать определенному окну? Причем желательно чтобы было это окно невидимым для юзера или хотя бы свернутым.
А в вашем примере нажатие Alt это где описано


Игорь Шевченко   (2003-10-06 14:45:00) [8]

Например, так:
procedure TForm1.Button1Click(Sender: TObject);
begin
keybd_event(VK_MENU, 0, 0, 0);
keybd_event(VK_F1, 0, 0, 0);
keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
end;


Это будет равносильно тому, что на клавиатуре нажата комбинация клавиш Alt+F1


Katrin   (2003-10-06 14:26:00) [9]

Я очень мало имела дело с WinAPI, вы бы не могли привести пример того, как послать например Alt-F1 чужому приложению. Буду оч благодарна


Игорь Шевченко   (2003-10-06 14:08:00) [10]

keydb_event, SendInput


Наверх

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