#c# #api
#c# #API
Вопрос:
Взгляните на эту картинку:
Вот как я получил дескриптор окна, заключенного в черный ящик.
Process[] processes = Process.GetProcessesByName("TopazChat");
foreach (Process p in processes)
{
MessageBox.Show(p.MainWindowHandle.ToString());
List<IntPtr> test = GetChildWindows(p.MainWindowHandle);
foreach (IntPtr IGotIt in test)
{
MessageBox.Show("I got the child windows");
}
}
Мой вопрос: как получить дескриптор окон, который был заключен в red box?
и что-то не так с моим подходом?
есть предложения? Я просто использую этот подход, потому что он единственный, который мне знаком..
Ответ №1:
Это другое окно является другим окном верхнего уровня в том же процессе, который реализует одно из видимых окон в приложении. Это старое приложение Delphi 7, которое реализует скрытое окно верхнего уровня, которое находится за пределами видимой иерархии окон. Это скрытое окно — то, которое вы нашли, выделено черным цветом, с именем класса TApplication.
На вашем месте я бы вызвал вызов EnumWindows, чтобы получить все окна верхнего уровня, которые будут включать видимые основные окна для этого приложения. Это было бы реализовано очень похоже на ваш метод GetChildWindows.
Комментарии:
1. Спасибо за быстрый ответ, я попробую