2008/04/07
델파이에서 System Global Hotkey 사용하기
Global Hotkey 이용하기의 마지막 팁이다.
이번에는 Delphi 에서 이용하는 방법이다.
델파이는 비주얼 베이직과 같이 RAD 툴이면서 비주얼 베이직과는 다르게 특별한 선언이 없이 바로 Win32 API 를 사용할 수 있다.
따라서 C++에서 사용하는 방법과 크게 다르지 않으며 다른 것이 있다면 메세지 핸들링하는 방법과 가상 키코드를 이용하는 방법이 약간 다르다.
메세지 핸들링하는 방법은 언어 자체가 다르니 C++과는 다를 수 밖에 없고 가상 키코드 사용은 델파이에 알파벳에 대응하는 키코드는 정의 되지 않아 직접 숫자로 적용 해야한다.
이번에는 Delphi 에서 이용하는 방법이다.
델파이는 비주얼 베이직과 같이 RAD 툴이면서 비주얼 베이직과는 다르게 특별한 선언이 없이 바로 Win32 API 를 사용할 수 있다.
따라서 C++에서 사용하는 방법과 크게 다르지 않으며 다른 것이 있다면 메세지 핸들링하는 방법과 가상 키코드를 이용하는 방법이 약간 다르다.
메세지 핸들링하는 방법은 언어 자체가 다르니 C++과는 다를 수 밖에 없고 가상 키코드 사용은 델파이에 알파벳에 대응하는 키코드는 정의 되지 않아 직접 숫자로 적용 해야한다.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
hkID: Integer;
procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
if Msg.HotKey = hkID then
ShowMessage('Ctrl + A pressed !');
end;
procedure TForm1.FormCreate(Sender: TObject);
// Different Constants from Windows.pas
const
MOD_ALT = 1;
MOD_CONTROL = 2;
MOD_SHIFT = 4;
MOD_WIN = 8;
begin
// Register Hotkey Ctrl + A
hkID := GlobalAddAtom('MyHotkey');
RegisterHotKey(Handle, hkID, MOD_CONTROL, $41);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(Handle, hkID);
GlobalDeleteAtom(hkID);
end;
end.
Original Post : http://neodreamer-dev.tistory.com/91
Labels:
Delphi
,
Global Hotkey
,
RegisterHotkey
,
TistoryOldPost
,
UnregisterHotKey
,
VCL
Subscribe to:
Post Comments
(
Atom
)
No comments :
Post a Comment