Puedes hacerlo como quieras. El Hook engancha antes de procesar la pulsación. HotKey te envía un mensaje.
El problema es actuar en el ClipBoard, tienes que trampearlo.
No es necesaria una dll para un hook de teclado, hazlo a bajo nivel.
Te muestro un ejemplo simple para evitar la copia al ClipBoard con un Hook LL al teclado:
Código PHP:
HHOOK hKeybHook;
LRESULT WINAPI KeybEvent(int nCode, WPARAM wParam, LPARAM lParam)
{
if( (nCode == HC_ACTION) && ((wParam == WM_SYSKEYDOWN) || (wParam == WM_KEYDOWN)) ){
bool Ctl_C = GetAsyncKeyState(VK_CONTROL) && (*(PDWORD)lParam == 0x43); //VK_C;
bool Ctl_V = GetAsyncKeyState(VK_CONTROL) && (*(PDWORD)lParam == 0x56); //VK_V;
if(Ctl_C){
CloseClipboard();
OpenClipboard(0);
EmptyClipboard();
}
else if(Ctl_V)
CloseClipboard();
}
return CallNextHookEx(hKeybHook, nCode, wParam, lParam);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
hKeybHook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)KeybEvent, GetModuleHandle(NULL), 0);
Beep(1000, 100);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
UnhookWindowsHookEx(hKeybHook);
CloseClipboard();
}
Saludos.