У меня есть процедура, которая получает все открытые окна (процессы), а затем ищет ее имя класса с помощью метода GetClassName в user32. Но когда, например, Teamviewer находится на классах всех приложений, получите имя класса teamviewer.user32 GetClassName неверно
Пример: Блокнот открыт и TeamViewer на имя класса: «TeamViewer_TitleBarButtonClass» Блокнот открыт и TeamViewer от имя_класса: «Блокнот»
Я смотрел, как это произошло, и обнаружил, что Teamviewer ставит контроль на вершине некоторых окна приложений.
Так как я могу найти настоящее имя класса приложений, а не TeamViewer?
Process[] processes = Process.GetProcesses();
StringBuilder className = new StringBuilder(100);
For (int i = 0; i < processes.Length; i++)
{
if (processes[i].MainWindowHandle != IntPtr.Zero)
{
list.Add(processes[i]);
GetClassName(processes[i].MainWindowHandle, className, className.Capacity);
}
}
Для чего вам нужно имя класса? Будет ли имя процесса в порядке? –
Хорошо, мой коллега создал этот код передо мной. Она использовала имя класса, чтобы выбрать открытое окно и привести его вперёд и в заранее определенное положение. –