![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
RegisterHotKey (KOL) [Delphi, Windows]
feens © (2005-07-28 00:03:00)Пробовал все варианты что нашел здесь и в FAQ но все равно программа не работает как надо - нечего не делает когда нажимаю "Q".
function appmsg(var Dummy_Self: PObj; var Msg: tagMSG;var Rslt:Integer):boolean;
begin
result:=false;
if (msg.message=WM_HOTKEY) and (msg.wParam=ord('q')) then begin
h:=findwindow(nil,'windov');
if h<>0 then sendmessage(h,WM_CLOSE,0,0);
result:=true;
end;
end;
begin
...
RegisterHotkey(applet.Handle, ord('q'), 0, ord('q') );
Applet.OnMessage := TOnMessage(MakeMethod( nil, @appmsg));
...
end.
Что здесь неправильно?
Программа только сидит в tray и ждет hotkey, потому handle у всех обьектах (TrayIcon, PopupMenu) есть applet. MCK не использую.
Thaddy (2005-07-28 12:18:00) [1]2dodfr: but only shift+ q won't work! that is simply uppercase. Alt or ctrl (or windows key) are necessary for the proper working of a hot key.
Dodfr (2005-07-28 02:01:00) [2]also with shift :-) and you can even mix them alll to make some complicated CTRL+SHIFT+ALT+A
Also your registerhotkey parameters is bad !
unique_id:=GlobalAddATOM('MyHotKey'); // idea to get some unique id
RegisterHotKey(form.Handle, unique_id, MOD_CONTROL + MOD_ALT + MOD_SHIFT, VK_A);
You can pass handle of form instead of applet.
Thaddy (2005-07-28 01:01:00) [3]Hotkeys need to be combined with either alt or crtl, unless you install a true keyboardhook or do something similar as I did with my pianokeyboard control, i.e. intercept everything and translate it into another keycode.