Получите местоположение и размер всех открытых окон с помощью.NET (C#)

Есть ли способ обнаружить и сохранить местоположение и размер всех открытых окон, а также их состояние (Минимизированный, Максимизируемый и т.д.)

Я никогда не разрабатывал ничего, что получает информацию от фактической операционной системы таким образом. Это требует вызова к Windows API и включает неуправляемый код?

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

10
задан Dan Harris 4 August 2010 в 15:06
поделиться

3 ответа

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

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

9
ответ дан 4 December 2019 в 00:59
поделиться

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

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

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

1
ответ дан 4 December 2019 в 00:59
поделиться

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

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

1
ответ дан 4 December 2019 в 00:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: