c++ - killer - process manager windows
¿Es Task Manager un tipo especial de ventana ''Always on Top'' para Windows 10? (2)
De una pequeña investigación que hice hace un tiempo:
- El Administrador de tareas es de hecho un "tipo especial" de Always-on-Top.
- La ventana Administrador de tareas se está creando con la siguiente función no documentada:
CreateWindowInBand
. - Intentar utilizar esta función desde otro proceso da como resultado
ERROR_ACCESS_DENIED
. Tal vez solo un proceso firmado de Microsoft puede usarlo.
Si mi ventana tiene el conjunto de estilos extendidos ''siempre en la parte superior'', esperaría que esté sobre todas las ventanas que no tienen el estilo ''Siempre arriba'' y aquellas ventanas que tienen el estilo ''Siempre arriba'' configurado pero se activaron antes de que se activara mi ventana.
Para probar esta característica, abro la ventana del administrador de tareas - myWindow
siempre en la parte superior y luego abro mi ventana ( myWindow
).
En Windows 7, observo el comportamiento esperado: myWindow
encuentra en la parte superior del administrador de tareas.
Sin embargo, en Windows 10, ese no es el caso. El administrador de tareas está "siempre en la parte superior" de otras ventanas, incluso si esas ventanas en sí tienen el estilo de ''siempre en la parte superior''.
¿Hay algo especial que estén haciendo con el administrador de tareas en Windows 10? En caso afirmativo, ¿hay algo de trabajo para poner mi ventana encima del administrador de tareas? Intenté simplemente usar la función BringWindowToTop
, pero eso no funciona. Tampoco lo hace setWindowPos
con HWND_TOP
como valor para el argumento hWndInsertAfter
.
Hubo muchos cambios en el Administrador de tareas en Windows 8. No sería del todo sorprendente que entre esos cambios haya un código de caso especial para garantizar que esté siempre encima de todas las demás ventanas siempre en la parte superior. Microsoft no estaría rompiendo ninguna garantía contractual al hacerlo, ya que el Administrador de tareas es una parte integrada del sistema operativo. Es libre de hacer lo que quiera con los componentes del sistema operativo.
Para responder a su pregunta real, no hay una API documentada para esto. WS_EX_TOPMOST
es lo mejor que obtienes. Es una ayuda para el usuario, no una forma de grabar la ventana de su aplicación en sus retinas.
Cuando dos ventanas diferentes tienen este conjunto de estilos, el comportamiento depende de la implementación. La única garantía que obtiene es que las ventanas con el estilo WS_EX_TOPMOST
siempre están encima de otras ventanas sin este estilo en el orden Z. De lo contrario, el sistema puede resolver los conflictos como lo considere oportuno, incluido mantener la ventana superior activa más reciente en la parte superior, rompiendo el empate forzando ventanas que pertenecen a los componentes del sistema a la parte superior o incluso castigando procesos que tienen más de una ventana con este estilo al forzar su ventana (s) al final de la pila "superior".
Lectura relacionada: