2008/04/07

C++ Builder 에서 System Global Hotkey 사용하기

이전 글에서 프로그램에 시스템 레벨의 Hotkey를 할당하는 팁을 올렸었다.

이는 Win32 API를 이용하는 것으로 예제는 Visual C++에 맞추어 있지만 이를 C++ Builder에도 쉽게 응용할 수 있다.


적용 절차는 Visual C++과 크게 다를게 없으며 메세지 핸들링하는 부분만 VCL에 맞게 해주면 된다.


// Header (.h)
ATOM GolbalKeyID;

void __fastcall OnHotKey(TWMHotKey &hotkey);

BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_HOTKEY, TWMHotKey, OnHotKey);
END_MESSAGE_MAP(TForm)


// Source (.cpp)
void __fastcall TForm1::FormCreate(TObject *Sender)
{
GolbalKeyID = GlobalAddAtom("MyKey");

RegisterHotKey(this->Handle, GolbalKeyID, MOD_WIN, 65 );
}
//------------------------------------------------------------------------

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
UnregisterHotKey(this->Handle, GolbalKeyID);

GlobalDeleteAtom(GolbalKeyID);
}
//------------------------------------------------------------------------

void __fastcall TForm1::OnHotKey(TWMHotKey& hotkey)
{
if (WindowState == wsMinimized)
Application->Restore();

ShowMessage("Global Hotkey pressed");
}
//------------------------------------------------------------------------

Original Post : http://neodreamer-dev.tistory.com/90

No comments :

Post a Comment