-
DJ_UZer © (22.03.08 18:15) [0]Привет все.. Я пишу программу и мне нужно использовать горячии клавиши и сразу у меня возникло 2 вопроса:
1. Как сделать горячии клавиши, пробовал не получилось...
2. Как сделать, чтобы данные клавиши работали и тогда, когда программа свернута?
Всем заранее спасибо.. -
kichrot (25.03.08 13:31) [1]procedure TForm1.KOLForm1FormCreate(Sender: PObj);
begin
//например комбинация клавиш Ctrl + Пробел
RegisterHotkey( Form.Handle, 1001, MOD_Control, vk_Space);
end;
function TForm1.KOLForm1Message(var Msg: tagMSG; var Rslt: Integer): Boolean;
begin
Result := FALSE;
if (msg.message=WM_HOTKEY)
and (msg.wParam=1001)
and (Length(ObjEventsArray)>0) then
begin
//свой код
end;
end; -
kichrot (25.03.08 13:35) [2]
> and (Length(ObjEventsArray)>0)
В предыдущем примере это не нужно. -
имя(19.04.09 21:31) [3]Удалено модератором -
AHTOLLlKA (03.05.09 01:34) [4]да.. и не забудь про UnRegisterHotKeytype
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
protected
procedure hotykey(var msg:TMessage); message WM_HOTKEY;
end;
var
Form1: TForm1;
id,id2:Integer;
implementation
{$R *.DFM}
procedure TForm1.hotykey(var msg:TMessage);
begin
if (msg.LParamLo=MOD_CONTROL) and (msg.LParamHi=81) then
begin
ShowMessage('Ctrl + Q wurde gedrьckt !');
end;
if (msg.LParamLo=MOD_CONTROL) and (msg.LParamHi=82)
then
begin
ShowMessage('Ctrl + R w!
urde gedrьckt !');
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
id:=GlobalAddAtom('hotkey');
RegisterHotKey(handle,id,mod_control,81);
id2:=GlobalAddAtom('hotkey2');
RegisterHotKey(handle,id2,mod_control,82);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(handle,id);
UnRegisterHotKey(handle,id2);
end;