2010-08-04 12 views
10

C'è un modo per rilevare e memorizzare la posizione e le dimensioni di tutte le finestre aperte, così come il loro stato (ridotto al minimo, Maximized ecc)Ottenga la posizione e le dimensioni di tutte le finestre aperte utilizzando .NET (C#)

I Non ho mai sviluppato nulla che ottenga informazioni dal sistema operativo attuale in questo modo. Richiede una chiamata a un'API di Windows e coinvolge codice non gestito?

Se questo non è chiaro si prega di commentare e cercherò di elaborare.

risposta

9

Chiama il numero EnumWindows per passare attraverso tutte le finestre, quindi chiama GetWindowPlacement per ottenere le informazioni. Richiede PInvoke per l'API di Windows, ma non è così difficile, è sufficiente trovare tutte le informazioni sul sito PInvoke.

Btw, ecco un articolo codeproject per trovare una finestra specifica e ottenere/impostare lo stato di visualizzazione di esso, potrebbe essere un buon punto di partenza (il codice è in VB.Net, ma probabilmente si potrebbe semplicemente utilizzare uno dei online VB.Net a # convertitori C se non si conosce VB.Net)

+0

Grazie, uso VB.NET a volte quando lavoro su vecchie app in lavoro da prima che andassero completamente C# –

1

La classe System.Diagnostics.Process ti fornisce molte informazioni di cui hai bisogno. Puoi provarlo.

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

Non sono sicuro che fornisca tutto ciò di cui avete bisogno. Ma la classe Process è in grado di fornire tante informazioni sui processi attualmente in esecuzione. È opportuno dare un'occhiata alla classe Process prima di passare alle API.

+0

Grazie non sono sicuro che questo fa tutto ciò di cui ho bisogno ma lo esaminerò prima di scendere la rotta dell'API. –

Problemi correlati