아핫뉴스실시간 인기검색어
아핫뉴스 화산 이미지
아하

생활

생활꿀팁

탈퇴한 사용자
탈퇴한 사용자

델파이에서 키보드 후킹을 하고싶은데요...

간단한 매크로 프로그램을 만들고 싶어서

키보드 후킹을 통해서 키보드 값을 알고싶습니다

예를 들어 F1키를 누를경우 그 값을 알고싶은데 어떻게 할까요??

    55글자 더 채워주세요.
    2개의 답변이 있어요!
    • 빠른너구리257
      빠른너구리257

      안녕하세요

      SetWindowsHookEx라는 함수를 통해 받아올 수 있습니다.

      SetWindowsHookEx(WH_KEYBOARD_LL, @LLKeyHookFunc, hInstance, 0);

      키보드 입력이 들어오면 LLKeyHookFunc을 실행시킵니다.

      아래는 LLKetHookFunc예제입니다.

      function LLKeyHookFunc(HookCode: Integer; KeyCode: wParam; kStrokeInfo: lParam): LResult; stdcall; var PKeyHook: PKeyHookStruct; idlestate: boolean; begin // 키 정보 받아오기 PKeyHook := Ptr(kStrokeInfo); if HookCode >= 0 then begin // F1일 경우 if (PKeyHook.vkCode = VK_F1) then begin // todo: Result := 1; end; idleState := true; end; // 필터링 된 키가 아니라면 계속 진행 Result := CallNextHookEx(HookID, HookCode, KeyCode, kStrokeInfo); end; ... HookID := SetWindowsHookEx(WH_KEYBOARD_LL, @LLKeyHookFunc, hInstance, 0);

      감사합니다.

    • 안녕하세요?

      델파이 키보드 후킹에 대해 문의주셨는데 간단한 예제로 통해 알려드리겠습니다

      밑에 예제는 F1키와 F2키를 누를경우 발생하는 이벤트 예제입니다

      TForm1 ... private { Private declarations } nHotKeyF1 : integer; nHotKeyF2 : integer; procedure WMHotKey(var Message: TWMHotKey); message WM_HOTKEY; procedure ScreenCapture(); ... procedure TForm1.FormCreate(Sender: TObject); begin nHotKeyF1 := GlobalAddAtom('DevelopistF1'); RegisterHotKey(Handle, nHotKeyF1, 0, VK_F1); nHotKeyF2 := GlobalAddAtom('DevelopistF2'); RegisterHotKey(Handle, nHotKeyF2, 0, VK_F2); end; procedure TForm1.FormDestroy(Sender: TObject); procedure RemoveHotKey(nHotKeyID : integer); begin UnregisterHotKey(Handle, nHotKeyID); GlobalDeleteAtom(nHotKeyID); end; begin if nHotKeyF1 <> 0 then RemoveHotKey(nHotKeyF1); if nHotKeyF2 <> 0 then RemoveHotKey(nHotKeyF2); end; procedure TForm1.WMHotKey(var Message: TWMHotKey); begin if Message.HotKey = nHotKeyF1 then begin //F1키 누를경우... end else if Message.HotKey = nHotKeyF2 then begin //F2키 누를경우... end;