Jak zarejestrować skrót klawiaturowy dla całego systemu
Adam Boduch
Czasami chcielibyśmy, aby skrót klawiatury był skojarzony z naszą aplikację - np. po kliknięciu kombinacji: Ctrl + F10 nasza aplikacja ma wykonywać jakąś czynność.
Najpierw w procedurze "OnCreate" należy wpisać:
{ Ta funkcja rejestruje skrót: Ctrl + F4 dla naszej aplikacji }
RegisterHotKey(Form1.Handle, $0001, MOD_CONTROL, VK_F4);
{Teraz w procedurze "OnClose" musisz wpisać:}
{ zwolnienie skrotu w systemi }
UnregisterHotKey(Form1.Handle, $0001);
No i w końcu deklaracja samej obsługi skrótu. W sekcji "private" dopisz taką linie:
procedure wm_HOTKEY(var Msg:TMessage);message WM_HOTKEY;
{Jest to komunikat "przechwytujący" skróty klawiaturowe. Najedź na niego kursorem myszy i wciśnij: Ctrl + Shift + C. Wpisz taką deklarację procedury:}
if Msg.WParam = $0001 then
{ reakcja na skrót klawiszowy }
Application.Restore; // przywrócenie aplikacji
co sie ma dziac po tej kombinacji? bo mi nic sie niedzieje
wpisuje taki kod:
procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterHotKey(Form1.Handle, $0001, MOD_CONTROL, VK_F4);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnregisterHotKey(Form1.Handle, $0001);
end;
procedure TForm1.wm_HOTKEY(var Msg: TMessage);
begin
if Msg.WParam = $0001 then
Application.Restore;
end;
end.
Mam problem, jak wcisnę CTRL + SHIFT + C to się nic nie dzieje.