본문 바로가기

Delphi/꿀팁

HotKey 등록해서 쓰기

핫키를 저장해 놓을 변수와 핫키를 확인하는 함수를 선언합니다.

TForm1 = class(TForm)

  ..

  procedure FormCreate(Sender: TObject);

  procedure FormDestroy(Sender: TObject);

private

  nHotKeyF2 : Integer;

  procedure WMHotKey(var Message: TWMHotKey); message WM_HOTKEY;

end;

핫키를 등록합니다.

procedure TForm.FormCreate(Sender: TObject);

begin

  nHotKeyF2 := GlobalAddAtom('DevelopistF2'); //윈도우에 나만의 핫키를 만듭니다. 

  RegisterHotkey(Handle, nHotKeyF2, 0, VK_F2); //만들어진 핫키를 등록합니다.


  //세번째 파라미터는 키 조합입니다. Ex) Ctrl + C, F2.. 등

  //참조 -> https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-registerhotkey

  //네번째 파라미터는 키 값입니다.

  //참조 -> https://docs.microsoft.com/ko-kr/windows/desktop/inputdev/virtual-key-codes

end;

종료전 핫키를 해제합니다.

procedure TForm1.FormDestroy(Sender: TObject);

  procedure RemoveHotKey(nHotKeyID : Integer);

  begin

    UnregisterHotKey(Handle, nHotKeyID);

    GlobalDeleteAtom(nHotKeyID);

  end;

begin

  if nHotKeyF2 <> 0 then RemoveHotKey(nHotKeyF2); //등록된 핫키가 존재하면 해제합니다.

end;

핫키를 확인하고 원하는 프로세스를 실행합니다.

procedure TForm.WMHotKey(var Message: TWMHotKey);

begin

  if Message.HotKey = nHotKeyF2 then

  begin

    {To Do}

    ShowMessage('F2를 눌렀습니다!');

  end;

end;


반응형