DLL을 동반하지 않고 포커스가 없을때도 특정 키보드 명령을 받는 방법입니다.

RegisterHotKey, UnRegisterHotKey 2개의 함수로 제공되며, 등록을 한 프로그램이 죽으면 자동적으로 핫키가 해제됩니다.

아래는 예제입니다. 첨부파일읋 실행한 후 Control + F3 을 누르면 메시지창이 뜹니다.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons;

type
  TForm1 = class(TForm)
    등록: TSpeedButton;
    해제: TSpeedButton;
    procedure 등록Click(Sender: TObject);
    procedure 해제Click(Sender: TObject);
  public
    procedure WMHotKey(var Message: TMessage); message WM_HOTKEY;
  end;
var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.WMHotKey(var Message: TMessage);
begin
  case Message.WParam of
    100 : begin
      FormStyle := fsStayOnTop;
      ShowMessage('단축키 Control + F3  이 실행되엇습니다');
      FormStyle := fsNormal;
    end;
  end;
end;

procedure TForm1.등록Click(Sender: TObject);
var
  isRegisterd : Boolean;
begin
  isRegisterd := RegisterHotKey(Handle, 100, MOD_CONTROL, VK_F3); //Control + F3
  if not isRegisterd then ShowMessage('등록실패');
end;

procedure TForm1.해제Click(Sender: TObject);
begin
  UnregisterHotKey(Handle, 100);
end;

end.