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

Вниз

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

 
Mazenrat   (2002-08-31 16:51) [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);


 
Mirovodin ©   (2002-09-02 14:13) [1]

Я именно так и регистрировал, все работает, можешь посмотреть в программе FreeMemory (www.hcsoft.spb.ru)

hWnd := CreateWindow("Название", "", 0, 0, 0, 0, 0, 0, 0, hInstance, Nil);
...
ShowWindow(hWnd, SW_HIDE);
...

у меня основное окно не видимо.

RegisterHotKey(hWnd, CM_ACTIVE, MOD_ALT + MOD_CONTROL, 123);
RegisterHotKey(hWnd, CM_INFO, MOD_ALT + MOD_CONTROL, 122);

А в обработчике :

Function WindowProc(hWnd: THandle; uMsg, wParam, lParam: Integer): Integer; Stdcall; Export;
Begin
Result := 0;
Case uMsg Of
...
WM_HOTKEY:
Begin
Case wParam Of
CM_INFO: ...
CM_ACTIVE: ...

...

и в

WM_DESTROY:
Begin
UnregisterHotKey(hWnd, CM_ACTIVE);
UnregisterHotKey(hWnd, CM_INFO);
...

Перехватыевает да же если мое приложение не активно.


 
Song ©   (2002-09-02 14:45) [2]

На sources.ru тебе популярно ответили. Что ещё не понятно? >:(



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

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

Наверх




Память: 0.47 MB
Время: 0.016 c
3-55934
Alias_
2002-09-24 22:56
2002.10.17
Вопрос по -2000


3-55977
Valery_N
2002-09-25 16:40
2002.10.17
Помогите сделать передвижение между колонками DBGrid по Enter


14-56299
Whiteman
2002-09-24 11:38
2002.10.17
Ребят срочно надо узнать! Помогите (вопрос не в тему)


3-56013
Шурик Ш
2002-09-26 16:50
2002.10.17
На какое событие повесить обработчик?


7-56387
Mummi
2002-08-08 10:59
2002.10.17
Написание драйверов под Windows