Lyn's Tip
글 수 75
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.
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.
