¿Qué es eso del efecto insinuación?
Otra cosa, he estado haciendo pruebas para ver si con lo que me pusiste pasaba por los eventos FormClose y FormCloseQuery y he podido comprobar como cierra la aplicacion sin pasar por ninguno de esos eventos. No se como lo hará entonces.
Así lo he dejado al final:
Código PHP:
void __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);
}
Un ultimo detalle sobre el componente, estaría muy bien el crear una propiedad que indique el tiempo que se mantendrá abierto el bocadillo para poder indicar el tiempo que queremos que se quede abierto. Eso es muy util para poner menos tiempo a mensajes cortos y mas a mensajes largos por ejemplo. ¿Es posible eso o viene un tiempo establecido que no es configurable?