Bueno, me he decidido por usar el registrado de los atajos y tengo esto:
Código PHP:
private: // User declarations
bool AtajosGlobales;
TMessageEvent OldApplicationOnMessage;
protected:
virtual void __fastcall AppMessage(tagMSG &Msg, bool &Handled);
Código PHP:
void __fastcall TForm1::AppMessage(tagMSG &Msg, bool &Handled)
{
if(Msg.message == WM_HOTKEY)
{
//Comprobamos si se pulsó algún atajo de teclado
if((LOWORD(Msg.lParam) == MOD_CONTROL) && (HIWORD(Msg.lParam) == 'L'))
{
ButtonClic->Click();
Sleep(150);
}else if((LOWORD(Msg.lParam) == MOD_CONTROL) && (HIWORD(Msg.lParam) == 'C'))
{
ButtonClose->Click();
}else if((LOWORD(Msg.lParam) == MOD_CONTROL) && (HIWORD(Msg.lParam) == 'D'))
{
ButtonDisable->Click();
}else if((LOWORD(Msg.lParam) == MOD_CONTROL) && (HIWORD(Msg.lParam) == 'A'))
{
ButtonEnable->Click();
}else if((LOWORD(Msg.lParam) == MOD_CONTROL) && (HIWORD(Msg.lParam) == 'M'))
{
ButtonShow->Click();
}else if((LOWORD(Msg.lParam) == MOD_CONTROL) && (HIWORD(Msg.lParam) == 'O'))
{
ButtonHide->Click();
}else if((LOWORD(Msg.lParam) == MOD_CONTROL) && (HIWORD(Msg.lParam) == 'X'))
{
ButtonMaximize->Click();
}else if((LOWORD(Msg.lParam) == MOD_CONTROL) && (HIWORD(Msg.lParam) == 'R'))
{
ButtonRestore->Click();
}else if((LOWORD(Msg.lParam) == MOD_CONTROL) && (HIWORD(Msg.lParam) == 'I'))
{
ButtonMinimize->Click();
}else if((LOWORD(Msg.lParam) == MOD_CONTROL) && (HIWORD(Msg.lParam) == 'S'))
{
ButtonTopmost->Click();
}else if((LOWORD(Msg.lParam) == MOD_CONTROL) && (HIWORD(Msg.lParam) == 'N'))
{
ButtonNonTop->Click();
}else if((LOWORD(Msg.lParam) == MOD_CONTROL) && (HIWORD(Msg.lParam) == 'E'))
{
ButtonSendCaption->Click();
}else{
OldApplicationOnMessage(Msg,Handled);
}
}else{
OldApplicationOnMessage(Msg,Handled);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
if(AtajosGlobales == true)
{
UnregisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey1"));
UnregisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey2"));
UnregisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey3"));
UnregisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey4"));
UnregisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey5"));
UnregisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey6"));
UnregisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey7"));
UnregisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey8"));
UnregisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey9"));
UnregisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey10"));
UnregisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey11"));
UnregisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey12"));
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
OldApplicationOnMessage = Application->OnMessage;
Application->OnMessage = AppMessage;
RegisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey1"), MOD_CONTROL,'L');
RegisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey2"), MOD_CONTROL,'C');
RegisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey3"), MOD_CONTROL,'D');
RegisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey4"), MOD_CONTROL,'A');
RegisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey5"), MOD_CONTROL,'M');
RegisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey6"), MOD_CONTROL,'O');
RegisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey7"), MOD_CONTROL,'X');
RegisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey8"), MOD_CONTROL,'R');
RegisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey9"), MOD_CONTROL,'I');
RegisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey10"), MOD_CONTROL,'S');
RegisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey11"), MOD_CONTROL,'N');
RegisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey12"), MOD_CONTROL,'E');
}
Lo que quiero es que cuando no sea uno de los atajos que yo he registrado el programa el resto funcione perfectamente pero no consigo ni que compile. ¿alguna ayuda para hacerlo bien?