Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/04/2016, 03:13
aguml
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 10 meses
Puntos: 3
Problemas con SendMessage y WM_QUERYENDSESSION y WM_ENDSESSION

Hola amigos, he estado liado con una pequeña aplicacion que realiza un hook de teclado y raton bloqueandolos. El caso es que a mis gatos les gusta mucho ponerse encima del teclado y me la lian cada vez que se ponen encima de este y el pc esta encendido. La aplicacion la tengo 100% funcional y va genial pero me di cuenta que, si tenia la aplicacion corriendo y con los hooks activos y apagaba el pc, Windows cierra todas las aplicaciones pero no es capaz de cerrar la mia. Ya me ayudaron a solucionar este problema que por lo visto mi aplicacion se negaba a cerrarse y al enviarle windows el mensaje WM_QUERYENDSESSION mi aplicacion devolvia un valor diferente de 1 con lo que Windows se quedaba a la espera y no se cerraba. Ahora que ya lo solucioné controlando ese mensaje en mi aplicacion, me he creado una pequeña aplicacion la cual su funcion seria enviar los mensajes WM_QUERYENDSESSION y WM_ENDSESSION y esta asi:
Código C++:
Ver original
  1. void __fastcall TForm1::ButtonQueryEndSessionClick(TObject *Sender)
  2. {
  3.    HWND hWnd;
  4.    UINT message = WM_QUERYENDSESSION;
  5.    WPARAM wParam = 0;
  6.    LPARAM lParam = 0;
  7.    LRESULT result;
  8.  
  9.    hWnd=FindWindow("TFormMain","Bloqueador anti-gato");
  10.    result = SendMessage(&hWnd,message,wParam,lParam);
  11. }
  12. //---------------------------------------------------------------------------
  13. void __fastcall TForm1::ButtonEndSessionClick(TObject *Sender)
  14. {
  15.    HWND hWnd;
  16.    UINT message = WM_ENDSESSION;
  17.    WPARAM wParam = 0;
  18.    LPARAM lParam = 0;
  19.    LRESULT result;
  20.  
  21.    hWnd=FindWindow("TFormMain","Bloqueador anti-gato");
  22.    result = SendMessage(&hWnd,message,wParam,lParam);
  23. }
  24. //---------------------------------------------------------------------------
El caso es que mi aplicacion no se cierra al mandarle esos mensajes y supongo que algo hago mal. ¿podeis ayudarme? Es que para probar lo que hice en mi aplicacion tenia que estar cerrando sesion y volviendola a abrir y lo suyo es simular eso para ahorrarme esos pasos ya que mi ordenador es del plestoceno y es lentito para encender y apagar.
Ambas aplicaciones estan hechas con C++Builder 6.