Как узнать имя базового класса окна?

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Как узнать имя базового класса окна?

Сообщение Nord777 » 22.04.2004 (Чт) 14:41

Возникла такая проблема:
Нужно определить к какому классу относится окно (Button, Listbox, Edit и.т.д.)
Загвоздка в том что если это окно унаследованнo от базового класса, то его имя может быть каким угодно хоть "xxxx", а мне нужно (Button, Listbox, Edit и.т.д.)
Если кто знает что нибудь про это поделитесь плиз!

Kalan
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 20.02.2004 (Пт) 17:04
Откуда: Москва

Сообщение Kalan » 22.04.2004 (Чт) 16:38

Ну, я не очень понял, что нужно, но инфу об окне можно получить с помощью SPY++,а исходники его я где-то в нете видел!

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 22.04.2004 (Чт) 18:48

Щас обьясню поподробней.
С помощью функции API EnumWindows я получаю манипуляторы (хэндлы) всех owned окон на экране, далее функцией GetClassName я получаю имя класса заданного окна. У всех окон есть классы. У кнопки имя класса - "Button", у текстового поля - "Edit" и.т.д. Но это родные классы Windows, а в VB.NET имя класса у кнопки - "windowsforms10.button.app3". Если я переопределяю класс Button то могу обозвать его как хочу, но но он все равно останется окном класса Button хоть и обзываться будет по другому.
Вот я и хочу узнать, есть ли каккая нибудь функция, которая бы сказала что окно с таким то хэндлом относится к классу "Button" а не "SuperPuperButtonByVasyaPupkin".

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 23.04.2004 (Пт) 9:58

Нет такой функции, имхо... Ибо registerclass...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 23.04.2004 (Пт) 19:46

Неужели Windows не знает к какому типу относится окно, которое висит у него на экране?
Когда я порылся в MSDN и нашел функцию RealGetWindowClass, я поначалу обрадовался, потому что в описании сказано, что эта функция возвращает строку, которая указывает тип окна. Но не тут то было, она возвращает тоже значение что и GetClassName. Возникает резонный вопрос - "Зачем в API нужны абсолютно одинаковые по действию функции но с разными названиями?". Вот такая вот петрушка. :cry:


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 45

    TopList