Si recibe los mensajes cuando windows se los manda pero no cuando se los mando yo. En mi aplicacion hago esto para controlar esos eventos:
Código C++:
Ver originalvoid __fastcall TFormMain::WndProc(Messages::TMessage &Message)
{
switch(Message.Msg){
case WM_QUERYENDSESSION:
Message.Result = 1;
return; // La VCL no podrá procesar el mensaje
case WM_ENDSESSION:
//CloseApp = true;
//SysTrayCanClose = CloseApp;
if(hKeyboardHook != NULL){
SysTrayIcon->Minimize();
SysTrayIcon->ShowBalloon("Oye tu","¿Como te atreves a cerrar la sesión cuando estoy bloqueando?\nEsto no quedará así, me he quedado con tu cara");
Sleep(6000);
UnhookWindowsHookEx(hKeyboardHook);
hKeyboardHook = NULL;
}
if(hMouseHook != NULL){
UnhookWindowsHookEx(hMouseHook);
hMouseHook= NULL;
}
break;
}
TForm::WndProc(Message);
}