PDA

Ver la Versión Completa : Mensaje WM de minimizar todo...


marceloalegre
01-09-2005, 15:48:53
Buenos dias, les molesto en esta oportunidad con el siguiente problema:
Necesito saber que mensaje manda windows a mi aplicacion cuando presiono la tecla windows+d (hace que se minimizen todas las aplicaciones)
ya que quiero capturar ese mensaje, y no es SC_MINIMIZE (ya lo he probado) :(

Gracias!

dec
01-09-2005, 17:39:15
Hola,

Trasteando un poco con el programa WinSight (disponible en la carpeta "bin" del directorio en donde instalaras Delphi) he conseguido localizar al menos algunos de los mensajes que Windows envía al presionarse la combinación de teclas que has mencionado.

Al cabo, al cabo (y no me preguntes cómo) he conseguido discriminar el número (integer) de mensaje que se envía (supongo que también se enviará en otras circunstancias) y puedes probarlo, por ejemplo, con un componente "TApplicationEvent" haciendo uso de su evento "OnMessage", tal que así:


if Msg.message = 45057 then
begin
{
Lo que pretendas hacer
}
Handled := true;
end;

Sin embargo, el mismo mensaje se recibe al minimizar el formulario principal de la aplicación, por poner un caso. Y, depende de lo que quieras hacer con el susodicho mensaje te será posible o no.

Por ejemplo, yo he tratado de evitar que la aplicación fuera minimizada... ¿cómo? Pues restaurándola al recibir el mensaje, pero, ¿qué dirás que pasa? Pues que Windows parece insistir, hasta el punto de que al cabo, al cabo, la aplicación se minimiza de todas, todas.

Si haces uso del programa WinSight mencionado antes verás que en el momento en que se pulsa la combinación de teclas "Windows + D" se envían varios mensajes a tu aplicación: a ver si tienes tú más vista que yo para lograr a partir de ahí lo que te propongas hacer.

Quiere decirse que tal vez investigando un poco más a partir de ahí logres lo que te propones (cosa que no dices, por cierto) y en cualquier caso más de lo que yo he podido decirte, que ya ves que a fuer de ser poco quizás sea inútil.

marceloalegre
01-09-2005, 20:16:44
Ante todo Dec quiero agradecer tu dedicacion como en troas oportunidades!!

en cuanto a ..


Quiere decirse que tal vez investigando un poco más a partir de ahí logres lo que te propones (cosa que no dices, por cierto)
Je!... justo lo que tu dices en el ejemplo tratar de hacer que una aplicacion no se minimize!, no he tenido resultado positivo aun... este windows siempre con sus cosas raras...!!!

ya he probado de capturar el SC_MINIMIZE :


begin
if (Msg.Cmdtype = SC_MINIMIZE)
then Msg.Result:=0;
else DefaultHandler(Msg);
end;


y no me funciona, voy a chequear mas con el programa que tu comentas a ver si puedo hacer algo. en cuanto al mensaje 45057 veo que lo detecta al poner windows +d pero no he podido hacer nada que sirva por el momento... como tu dices, windows igual se las arregla para minimizar la aplicacion. :)

Vamos a ver que pasa... si se algo nuevo sera posteado para que cuando alguien le pase eso lo pueda aprovechar!,,Gracias de nuevo dec!

SALUDOS.-