Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.12;
Скачать: CL | DM;

Вниз

Как зарегистрировать гарячие клавиши в приложении???   Найти похожие ветки 

 
Mazenrat   (2002-08-31 15:40) [0]

Добрый день.

Как зарегистрировать гарячие клавиши в приложении, не имеющего формы (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);


 
Mazenrat   (2002-08-31 18:53) [1]

Не знаем???


 
CrazyAngel ©   (2002-08-31 18:59) [2]

?-)
Написать хук на перехват нажатия клавиши и выбирать те сочетания клавиш которые тебе нравятся
Про хуки было в FAQ :)


 
Mazenrat   (2002-08-31 19:30) [3]


> Написать хук на перехват нажатия клавиши и выбирать те сочетания
> клавиш которые тебе нравятся
> Про хуки было в FAQ :)


Глупости!
Если можно зарегистрировать в системе свои горячие клавишы с помощью VCL приложения, то это же можно сделать с помощью API приложения. Не знаеш - не советуй!


 
Mazenrat   (2002-08-31 19:31) [4]


> Написать хук на перехват нажатия клавиши и выбирать те сочетания
> клавиш которые тебе нравятся
> Про хуки было в FAQ :)


Глупости!
Если можно зарегистрировать в системе свои горячие клавишы с помощью VCL приложения, то это же можно сделать с помощью API приложения без всяких хуков. Не знаеш - не советуй!


 
CrazyAngel ©   (2002-08-31 19:32) [5]

Хочешь сказать работать не будет ?


 
CrazyAngel ©   (2002-08-31 19:38) [6]

Если не нравится посмотри как это в HotKeyManager сделано помоему это то что ты ищешь ...


 
Mazenrat   (2002-08-31 19:38) [7]


> Если не нравится посмотри как это в HotKeyManager сделано
> помоему это то что ты ищешь ...


Где смотреть?


 
CrazyAngel ©   (2002-08-31 19:39) [8]

В поиске ссылка.


 
Юрий Зотов ©   (2002-09-01 11:31) [9]

> Mazenrat (31.08.02 19:31)

Не такие уж и глупости.

> Если можно зарегистрировать в системе свои горячие клавишы с
> помощью VCL приложения, то это же можно сделать с помощью API
> приложения без всяких хуков

Да, можно. Если в программе есть хотя бы одно окно (пусть даже и невидимое - неважно, лишь бы оно было).

Если же ни одного окна нет... то что передавать в первом параметре RegisterHotKey? И в какую оконную функцию должно приходить WM_HOTKEY?

А вот хук позволяет обойтись без всяких окон. Так что - не такие уж и глупости.


 
Mazenrat   (2002-09-01 11:58) [10]

Хук - слишком хлопотно, да и размер программы увеличится.


 
Беня Ладен   (2002-09-02 01:07) [11]

Гарачии Клавищи как и горачии парни не могут
быть зарегестрированны... (кавказкая мудрость).



Страницы: 1 вся ветка

Текущий архив: 2002.09.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
1-35710
AlexanderK2
2002-09-02 16:30
2002.09.12
Функция в потоке не видит членов своего класса?


6-35837
Landgraph
2002-07-08 10:26
2002.09.12
Socket


6-35838
dn
2002-07-08 13:03
2002.09.12
Проблема с полем Data у ClientSocketa


3-35612
Corr
2002-08-22 17:28
2002.09.12
Абсолютный и относительный пути к локальной базе данных


14-35894
kalenih
2002-08-19 14:09
2002.09.12
Привет