Código:
HHOOK WHookKeyboard = 0;
//---------------------------------------------------------------------------
bool Hook()
{
if(WHookKeyboard == 0) {
WHookKeyboard = SetWindowsHookEx(WH_KEYBOARD_LL, reinterpret_cast<HOOKPROC>(KeyboardHookCallBack), HInstance, 0);
// Antigua y clásica forma de hacer el casting
// WHookKeyboard = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)KeyboardHookCallBack, HInstance, 0);
}
return (bool)WHookKeyboard;
}
//---------------------------------------------------------------------------
void UnHook()
{
UnhookWindowsHookEx(WHookKeyboard);
WHookKeyboard = 0;
}
//---------------------------------------------------------------------------
LRESULT CALLBACK KeyboardHookCallBack(int Code, WPARAM wParam, LPARAM lParam)
{
if(Code == HC_ACTION){
// PKBDLLHOOKSTRUCT hs = (PKBDLLHOOKSTRUCT)lParam;
PKBDLLHOOKSTRUCT hs = reinterpret_cast<PKBDLLHOOKSTRUCT>(lParam);
if (hs->vkCode == VK_SNAPSHOT || hs->vkCode == VK_PRINT){
return -1; // Devolvemos sin permitir el procesado de print screen
}
}
// Permitimos el proceso del resto del teclado.
return CallNextHookEx(WHookKeyboard, Code, wParam, lParam);
}
Saludos.