2010-08-04 26 views
10

¿Hay una manera de detectar y almacenar la ubicación y el tamaño de todas las ventanas abiertas, así como su estado (minimizado, maximizado etc)Obtener ubicación y el tamaño de todas las ventanas abiertas utilizando .NET (C#)

I Nunca he desarrollado nada que obtenga información del sistema operativo real de esta manera. ¿Requiere una llamada a una API de Windows e involucra un código no administrado?

Si esto no está claro, por favor coméntelo y lo trataré de explicar.

Respuesta

9

Llame EnumWindows para recorrer todas las ventanas, luego llame al GetWindowPlacement para obtener la información. Se requerirá PInvoke para Windows API, pero no es tan difícil, solo puede encontrar toda la información en el sitio PInvoke.

Btw, aquí hay un artículo codeproject para encontrar una ventana específica y obtener/establecer el estado del programa, podría ser un buen punto de partida (el código está en VB.Net, pero probablemente podría simplemente usar uno de los en línea VB.Net a C# convertidores si usted no sabe VB.Net)

+0

Gracias, uso VB.NET a veces cuando trabajo en aplicaciones antiguas en el trabajo antes de que funcionaran completamente C# –

1

System.Diagnostics.Process class le proporciona gran parte de la información que necesita. Puedes intentar eso.

 Process[] currentProcesses = Process.GetProcesses();   
     Console.WriteLine("MainWindowTitle: {0}",currentProcesses[0].MainWindowTitle); 
     Console.WriteLine(currentProcesses[0].StartInfo.WindowStyle); 

No estoy seguro si proporciona todo lo que necesita. Pero la clase Process es capaz de proporcionar tanta información sobre los procesos actualmente en ejecución. Es bueno echar un vistazo a la clase de proceso antes de pasar a las API.

+0

Gracias, no estoy seguro de que esto haga todo lo que necesito, pero investigaré esto antes de seguir la ruta API. –

Cuestiones relacionadas