none
[Ayuda] Detectar si hay otras aplicaciones con pantalla maximizada

    Pregunta

  • Hola amigos,

    Me gustaría crear alguna función en la cual detectar si hay alguna aplicación del sistema con la pantalla maximizada y en este caso de que esté maximizada alguna aplicación (ya sea un juego o otra aplicación) cuando me refiero maximizada, es que no se ve la barra de tareas tampoco, es decir como cuando abrimos un juego...

    Lo que quiero es saber detectar esto y cuando detecte una aplicación así por ejemplo utilizar un My.Setting es decir.

    Si la pantalla esta maximizada por alguna App entonces My.Setting("PantallaCompleta") = 1 y en caso de que no lo este con un valor de 0

    Estoy haciendo un trabajo para una aplicación mía y no encuentro nada por msdn ni por google,

    Podrían ayudarme?

    Gracias!

    domingo, 2 de abril de 2017 17:39

Respuestas

  • Se me ocurre que podrías usar Platform/Invoke para llamar a las API de Windows. Con la API EnumWindows puedes descubrir todas las ventanas top level y, si es necesario, puedes llamar a EnumChildWindows para obtener las ventanas hijas. Por cada ventana que te encuentres, puedes llamar a GetWindowRect, que te dará las coordenadas de la ventana, y/o GetWindowPlacement, que te dirá si está maximizada.

    Si no quieres escribir a mano las declaraciones para el P/Invoke, puedes recurrir a http://pinvoke.net/ , que tiene ya escritas las declaraciones para casi todas las APIs, así como ejemplos de uso de muchas de ellas. Pero aún recurriendo a pinvoke.net, hay que entender cómo funcionan las APIs (están documentadas en MSDN) y te llevará bastante trabajo encontrar la combinación adecuada y hacerlas funcionar correctamente.

    Ah, y hay al menos un caso en el que puede que esto falle. Si tienes algún programa que use DirectX para acceder a la pantalla, creo (aunque no estoy seguro, tendrás que probarlo) que no se construye ninguna ventana, por lo que el procedimiento anterior no lo detectaría.

    domingo, 2 de abril de 2017 18:43