Получить расположение и размер всех открытых окон, используя .NET (C #) - PullRequest
10 голосов
/ 04 августа 2010

Есть ли способ обнаружить и сохранить местоположение и размер всех открытых окон, а также их состояние (свернуто, развернуто и т. Д.)Система таким образом.Требует ли он вызова Windows API и использования неуправляемого кода?

Если это не ясно, пожалуйста, прокомментируйте, и я постараюсь уточнить.

Ответы [ 3 ]

9 голосов
/ 04 августа 2010

Вызовите EnumWindows , чтобы пройти через все окна, затем вызовите GetWindowPlacement , чтобы получить информацию. Для этого потребуется PInvoke для Windows API, но это не так сложно, просто можно найти всю информацию на сайте PInvoke .

Кстати, вот статья codeproject для поиска конкретного окна и получения / установки его состояния показа, может быть хорошей отправной точкой (код находится в VB.Net, но вы могли бы просто используйте один из онлайн-конвертеров VB.Net в C #, если вы не знаете VB.Net)

1 голос
/ 04 августа 2010

System.Diagnostics.Process класс получает большую часть необходимой информации. Вы можете попробовать это.

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

Я не уверен, предоставляет ли он все, что вам нужно. Но класс Process способен предоставить так много информации о запущенных процессах. Перед тем, как перейти к API, полезно взглянуть на класс Process.

1 голос
/ 04 августа 2010

Да, вы начнете с EnumWindows: http://msdn.microsoft.com/en-us/library/ms633497.aspx

См. В списке «Функции окна» способы получения доступа к необходимой информации: http://msdn.microsoft.com/en-us/library/ff468919.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...