Showing posts with label Global Hotkey. Show all posts
Showing posts with label Global Hotkey. Show all posts
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
2008/04/04
프로그램에 시스템 Hotkey 붙이기
프로그램에 시스템 Hotkey를 연결하여 언제 어디서나 프로그램을 호출하거나 특정 기능을 동작 시킬 수 있다.
Hotkey를 사용하기 위한 API 함수이다.
시스템에 유일한 아이디를 만들고 핫키를 할당하면 된다.
RegisterHotkey 사용 방법
Original Post : http://neodreamer-dev.tistory.com/88
Hotkey를 사용하기 위한 API 함수이다.
ATOM GlobalAddAtom(
LPCTSTR lpString
);
BOOL RegisterHotKey(
HWND hWnd,
int id,
UINT fsModifiers,
UINT vk
);
BOOL UnregisterHotKey(
HWND hWnd,
int id
);
시스템에 유일한 아이디를 만들고 핫키를 할당하면 된다.
///////////////////////////////////////////////////////////////
// Header
// 시스템 Hotkey ID
ATOM atm;
// WM_HOTKEY message 핸들러 함수
afx_msg LRESULT OnHotkey(WPARAM wparam, LPARAM lparam);
// 핸들러 함수 매핑
BEGIN_MESSAGE_MAP
ON_MESSAGE(WM_HOTKEY, OnHotkey)
///////////////////////////////////////////////////////////////
// Source
::OnInitDialog()
// 시스템에 유일한 ID 생성
atm = GlobalAddAtom( _T("MyHotkey") );
// 시스템 Hotkey 등록
RegisterHotKey( this->m_hWnd, atm, MOD_WIN, VK_SPACE );
::OnClose()
// 시스템 Hotkey 해제
UnregisterHotKey( this->m_hWnd, atm );
// Hotkey 핸들러 함수
LRESULT CGlobalHKeyDlg::OnHotkey(WPARAM wparam, LPARAM lparam)
{
AfxMessageBox( _T("Global Hotkey") );
return 0;
}
RegisterHotkey 사용 방법
BOOL RegisterHotKey(
HWND hWnd,
int id,
UINT fsModifiers,
UINT vk
);
HWND hWnd
핫키를 할당하고자 하는 윈도우 핸들
int id
핫키 아이디
UINT fsModifiers
핫키에 사용될 조합키
MOD_ALT ALT key
MOD_CONTROL CTRL key
MOD_SHIFT SHIFT key
MOD_WIN WINDOW key
UINT vk
핫키
Original Post : http://neodreamer-dev.tistory.com/88
Labels:
Global Hotkey
,
GlobalAddAtom
,
Hotkey
,
RegisterHotkey
,
TistoryOldPost
,
UnregisterHotKey
,
WM_HOTKEY
Subscribe to:
Posts
(
Atom
)