![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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