2011-09-15 13 views
14

Tengo una aplicación de pantalla completa para Windows 7 escrita en C++ que debe ejecutarse durante mucho tiempo por sí misma como presentación pública.Windows 7: evitar que la aplicación pierda el foco

El problema es que hay varias aplicaciones o controladores o el propio Windows que roban el foco de vez en cuando y/o especialmente al inicio del sistema. El resultado es: Mi aplicación de pantalla completa se minimiza.

Es muy molesto y casi imposible saber siempre qué cosas tiene que desactivar para evitar eso. Especialmente porque a veces se necesita enfocar el robo de cosas, p. controladores de pantalla táctil.

¿Qué puedo hacer para evitar perder el foco?

O incluso mejor: ¿Cómo puedo evitar que otras aplicaciones roben el foco? Recuerdo que una vez existió tal configuración en TweakUI para Windows XP.

Respuesta

20

Tweak UI lo hace al cambiar el SPI_SETFOREGROUNDLOCKTIMEOUT. Puede combinar esto con LockSetForegroundWindow.

+1

Una buena respuesta, pero lamentablemente no resuelve mi problema. Supongo que el problema no es una aplicación que intente establecer una ventana ya existente para el forground que se previene por defecto en Windows 7, supongo. Pero es algo que crea una ventana temporal a través de shellexec o algo así. Algún mal proceso de fondo programado desde un controlador o actualizador automático o lo que sea. Lo malo es que no tengo fácil acceso a la computadora del jugador :-( –

+3

LockSetForegroundWindow debe bloquear ese escenario. Sin embargo, tenga en cuenta que el bloqueo que establece a través de LockSetForegroundWindow se borra cuando el usuario presiona Alt o hace clic en otra ventana, por lo que debe échale un ojo. –

+0

Tu solución funciona. Cometí un error con SystemParametersInfo (SPI_SETFOREGROUNDLOCKTIMEOUT ...) porque no me di cuenta de que tienes que pasar el valor a través del valor del parámetro del puntero, aunque hay un parámetro entero (lo cual es raro, por supuesto) –

Cuestiones relacionadas