FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#21
|
||||
|
||||
No he tenido esa experiencia con Hooks, pero puede ser que tu app se niegue a terminar la sesión. Para resolverlo tendrás que manejar los mensajes WM_QUERYENDSESSION y WM_ENDSESSION
Suelo reescribir la función virtual WndProc del formulario para estos menesteres: Código:
private: void __fastcall WndProc(Messages::TMessage &Message); Código:
void __fastcall TForm1::WndProc(Messages::TMessage &Message) { switch(Message.Msg){ case WM_QUERYENDSESSION: Message.Result = 1; break; case WM_ENDSESSION: if(hKeyboardHook) UnhookWindowsHookEx(hKeyboardHook); if(hMouseHook) UnhookWindowsHookEx(hMouseHook); break; } TForm::WndProc(Message); } Saludos. |
#22
|
||||
|
||||
Mañana lo probaré pero me surgen un par de dudas al ver tu código:
1. ¿que hace Message.Result=1 exactamente? Es que solo veo esa instrucción para ese evento. 2. Al apagarse windows este cierra todas las aplicaciones antes ¿usa TerminateProcess para ello? ¿al cerrarla no pasa por el evento OnClose al cerrarse? |
#23
|
||||
|
||||
Cita:
Cita:
Cuando windows pide que una sesión se cierre porque se va a cerrar la sesión, lo hace a través de WM_QUERYENDSESSION, si las aplicación responde con un número distinto de 0, entonces envía WM_ENDSESSION. La respuesta a ese mensaje debería hacer cerrar la app por su vía natural. Por algún motivo tu app se niega a cerrarse en el mensaje WM_QUERYENDSESSION y WM_ENDSESSION no es enviado o no está siendo bien tratado. Estas circunstancias no deberían aparecer en una app VCL, pero al parecer te ha sucedido. Es por eso que te propongo que tu mismo trates esos mensajes. Ahora que te escribo estas líneas, cambia el tratamiento de mensajes por este otro, para forzar la respuesta de WM_QUERYENDSESSION: Código:
void __fastcall TForm1::WndProc(Messages::TMessage &Message) { switch(Message.Msg){ case WM_QUERYENDSESSION: Message.Result = 1; return; // La VCL no podrá procesar el mensaje case WM_ENDSESSION: if(hKeyboardHook) UnhookWindowsHookEx(hKeyboardHook); if(hMouseHook) UnhookWindowsHookEx(hMouseHook); break; } TForm::WndProc(Message); } |
#24
|
||||
|
||||
Pero si haciendo lo que haces en el primer case se supone que ya se cerrará por su vía normal se supone que ya irá al evento OnClose y allí ya me encargo de terminar los hooks ¿para que controlar el segundo evento que pones?
|
#25
|
||||
|
||||
Cita:
PD/ He actualizado el control TSysTrayIcon Saludos. |
#26
|
||||
|
||||
¿Que le has hecho?
|
#27
|
||||
|
||||
Cita:
Saludos. |
#28
|
||||
|
||||
¿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:
Última edición por aguml fecha: 04-04-2016 a las 10:46:31. |
#29
|
||||
|
||||
Otro detalle, he instalado la nueva version del componente y lo he probado con mi proyecto. En mi proyecto al dar al boton cerrar de la barra de titulo del formulario se minimiza el formulario al systray y veo que en tu ejemplo al minimizar no se produce el efecto ese que parece que se encoje el formulario hacia la barra de tareas pero en mi caso si se produce ese efecto. No se si es normal con la nueva version de tu componente o no.
|
#31
|
||||
|
||||
Muchas gracias.
|
#32
|
||||
|
||||
Lo he instalado y probado y esta genial. Solo dos cosillas, el limite inferior se lo he cambiado de 5000 a 1000 y el superior lo he dejado pero 300000 me parece mucho ya que son 5 minutos. Creo que es demasiado pero nunca se sabe para que puede servir tener un bocadillo 5 minutos en pantalla jajaja.
|
#33
|
||||
|
||||
El problema está en que win 8 y 10 no admiten valores menores de 5000 y el límite alto es de 5 minutos. En WINXP no hay problema para establecer el límite que quieras. Es por eso que puse los límites que ves.
Saludos. |
#34
|
||||
|
||||
Aaaa ok ok. De todos modos es genial.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Bloqueador para Android | FabianSiza | Desarrollo en Delphi para Android | 1 | 14-01-2015 13:22:45 |
teclado usb | armando | Varios | 1 | 12-02-2011 04:09:00 |
Bloqueador solar.... | RONPABLO | La Taberna | 5 | 16-07-2007 19:48:47 |
Teclado | D-MO | Linux | 3 | 14-07-2006 21:06:07 |
USB Teclado en Red Hat 9 | nicocer | Linux | 0 | 05-07-2004 22:04:56 |
|