![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как зарегистрировать гарячие клавиши в приложении???
Mazenrat © (2002-08-31 15:40:00)Добрый день.
Как зарегистрировать гарячие клавиши в приложении, не имеющего формы (Win32API)?
Горячие клавиши (shortcuts) должны быть доступны даже если на данный момент активна другая программа (как это делает аська). Я пытался сделать следующим образом (см. ниже) но у приложения не имеющего формы невозможно сделать это:
protected
procedure hotykey(var msg:TMessage); message WM_HOTKEY;
end;
Как мне быть?
Или можно как-то по-другому?
Вот код:
//Переменные
var
hWnd: THandle;
id,id2:Integer;
//Процедура выполнения команд по нажатию горячих клавиш
procedure hotykey(var msg:TMessage);
begin
if (msg.LParamLo=MOD_CONTROL) and (msg.LParamHi=81) then begin
ShellExecute(hwnd, "open", "calc.exe", nil, nil, sw_shownormal); end;
if (msg.LParamLo=MOD_CONTROL) and (msg.LParamHi=82) then begin
ShellExecute(hwnd, "open", "calc.exe", nil, nil, sw_shownormal); end;
end;
//При создании приложения:
id:=GlobalAddAtom("hotkey");
RegisterHotKey(hWnd,id,mod_control,81);
id2:=GlobalAddAtom("hotkey2");
RegisterHotKey(hWnd,id2,mod_control,82);
//При уничтожении приложения:
UnRegisterHotKey(hWnd,id);
UnRegisterHotKey(hWnd,id2);
Беня Ладен (2002-09-02 01:07:00) [1]Гарачии Клавищи как и горачии парни не могут
быть зарегестрированны... (кавказкая мудрость).
Mazenrat (2002-09-01 11:58:00) [2]Хук - слишком хлопотно, да и размер программы увеличится.
Юрий Зотов (2002-09-01 11:31:00) [3]> Mazenrat (31.08.02 19:31)
Не такие уж и глупости.
> Если можно зарегистрировать в системе свои горячие клавишы с
> помощью VCL приложения, то это же можно сделать с помощью API
> приложения без всяких хуков
Да, можно. Если в программе есть хотя бы одно окно (пусть даже и невидимое - неважно, лишь бы оно было).
Если же ни одного окна нет... то что передавать в первом параметре RegisterHotKey? И в какую оконную функцию должно приходить WM_HOTKEY?
А вот хук позволяет обойтись без всяких окон. Так что - не такие уж и глупости.
CrazyAngel (2002-08-31 19:39:00) [4]В поиске ссылка.
CrazyAngel (2002-08-31 19:38:00) [5]Если не нравится посмотри как это в HotKeyManager сделано помоему это то что ты ищешь ...
Mazenrat (2002-08-31 19:38:00) [6]
> Если не нравится посмотри как это в HotKeyManager сделано
> помоему это то что ты ищешь ...
Где смотреть?
CrazyAngel (2002-08-31 19:32:00) [7]Хочешь сказать работать не будет ?
Mazenrat (2002-08-31 19:31:00) [8]
> Написать хук на перехват нажатия клавиши и выбирать те сочетания
> клавиш которые тебе нравятся
> Про хуки было в FAQ :)
Глупости!
Если можно зарегистрировать в системе свои горячие клавишы с помощью VCL приложения, то это же можно сделать с помощью API приложения без всяких хуков. Не знаеш - не советуй!
Mazenrat (2002-08-31 19:30:00) [9]
> Написать хук на перехват нажатия клавиши и выбирать те сочетания
> клавиш которые тебе нравятся
> Про хуки было в FAQ :)
Глупости!
Если можно зарегистрировать в системе свои горячие клавишы с помощью VCL приложения, то это же можно сделать с помощью API приложения. Не знаеш - не советуй!
CrazyAngel (2002-08-31 18:59:00) [10]?-)
Написать хук на перехват нажатия клавиши и выбирать те сочетания клавиш которые тебе нравятся
Про хуки было в FAQ :)
Mazenrat (2002-08-31 18:53:00) [11]Не знаем???