¿Hay alguna forma de garantizar que Internet Explorer siempre será la ventana más alta?

Estoy intentando forzar que una ventana de Internet Explorer sea TOPMOST. Ninguna otra ventana debería aparecer en la parte superior de la ventana de Internet Explorer. Tengo que usar Internet Explorer. También estoy ejecutando esto en Windows 7. Aparentemente, eso marca la diferencia, pero toda la información que encontré es bastante vaga y básicamente consiste en personas que gritan "¡por qué no es más fácil!". Este es mi codigo:

HWND ieWin = FindWindow(TEXT("IEFrame"), 0);
SetFocus(ieWin);
SetWindowPos(ieWin, HWND_TOPMOST, 0, 0, 100, 100, SWP_SHOWWINDOW );
UpdateWindow(GetParent(ieWin));

Esto se está ejecutando en un bucle, por lo que puedo forzar a la ventana a tener esta configuración de forma continua, pero no está ayudando. A veces, el código anterior funciona y otras no.

preguntado el 09 de marzo de 12 a las 15:03

Vea blogs.msdn.com/b/oldnewthing/archive/2011/03/10/10138969.aspx. Las nuevas versiones de Windows han tomado medidas para intentar bloquear las aplicaciones que insisten en comportarse mal. -

Lo más probable es que sus usuarios no se emocionen con este comportamiento. -

No estoy emocionado por este comportamiento, pero los usuarios lo pidieron y no, no es una opción. Con suerte, no se puede hacer será una respuesta aceptable. -

HWND badWin = FindWindow("YourWindow"); SendMessage(badWin, WM_CLOSE); -

@ dlee777: Raymond Chen (con quien nos vinculamos) es un arquitecto de Microsoft. Puede decirles a sus usuarios que Microsoft le dice explícitamente que no haga esto. -

2 Respuestas

respondido 09 mar '12, 15:03

Después de mucha discusión, terminé obligando a la ventana a permanecer en la parte superior usando un bucle. Si alguien más necesita hacer esto en el futuro, debe asegurarse de que está siguiendo los pasos a continuación.

1) Asegúrese de que tengan control absoluto sobre las ventanas que su usuario puede abrir. En mi caso, el usuario solo podrá abrir mi programa e Internet Explorer.

2) La primera vez que configura la ventana de IE para que se muestre, configúrela en primer plano.

3) Mientras realiza un bucle para establecer la ventana en TOP_MOST, NO establezca el foco en la ventana de IE.

4) Asegúrese de tener SWP_SHOWWINDOW, SWP_NOSIZE y SWP_NOMOVE. De lo contrario, ese bucle cambiará el tamaño y el lugar de su ventana en cada iteración.

Y si puedes evitarlo en lo posible, nunca hagas esto en absoluto: P

respondido 16 mar '12, 12:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.