Вопрос № 21920: ЗДраствуйте эксперты:-)
Хотел бы узнать как програмно узнать допутим заголовок окна отдельной программы через свою программу... например узнать заголовок окна винампа )
Заранее спасибо...
Вопрос № 21.920
ЗДраствуйте эксперты:-)
Хотел бы узнать как програмно узнать допутим заголовок окна отдельной программы через свою программу... например узнать заголовок окна винампа )
Заранее спасибо
Отправлен: 08.06.2005, 05:25
Вопрос задал: ДимооН :) (статус: 1-ый класс)
Всего ответов отправлено: 4
Отвечает: Ерёмин Андрей
Здравствуйте, ДимооН :)!
Можно воспользоваться функцией WinAPI GetWindowText(), которая возвращает заголовок окна, чей указатель ей передан. В свою очередь, найти указатель нужного окна можно через FindWindow(), передав ей в качестве заголовка пустую строку (т.к. он неизвестен и его требуется найти), а в качестве имени класса - класс нужного окна, например того же Winamp (Класс окна Winamp'а - BaseWindow_RootWnd).
Ответ отправил: Ерёмин Андрей (статус: 6-ой класс)
Отправлен: 08.06.2005, 07:30 Оценка за ответ: 5
Отвечает: Voituk Alexander
Здравствуйте, ДимооН <img src=http://img.mail.ru/ru/btn/smile.gif>!
Это очень просто - сначала функцией GetWindow получи дескриптор нужного окна, а потом используя это дескриптор функцией GetWindowText получишь его заголовок.
Ответ отправил: Voituk Alexander (статус: 7-ой класс)
Отправлен: 08.06.2005, 11:30 Оценка за ответ: 4
Отвечает: SackTap
Здравствуйте, ДимооН :)!
Вы можете получить дескриптор любого окна при помощи функции FindWindow, прототип одного из алиасов которой в приложении. Для поиска окна этой функцией необходимо передать ей имя окна и имя класса, но в вашем случае имя окна нужно узнать, поэтому нужно передать имя класса. Этот класс можно определить входящей в состав Visual Studio утилитой Spy++. Получив дескриптор окна вы можете сделать с ним все, что только захотите, в том числе и получить его имя:
char sText[100];
HWND hFW = FindWindow ("misc_class",NULL);
GetWindowText (hFW, sText, sizeof(sText));
Приложение:
--------- =)
Ответ отправил: SackTap (статус: 9-ый класс)
Отправлен: 08.06.2005, 11:39 Оценка за ответ: 5
Отвечает: Виталий
Здравствуйте, ДимооН :)!
Можно перебрать все окна функцией FindWindow
а по по возвращенному дескриптору получит заголовок окна функцией
GetWindowText.
Или например можно пуступить так:
получить положение окна (например по положению мышки)
и начать переберать окна в Z последовательности функцией GetNextWindow
по хендлу определять область окна функцией GetWindowPlacement
и область какого первого окна будет соответсвовать - над тем и находится курсор.
Ответ отправил: Виталий (статус: 1-ый класс)
Отправлен: 08.06.2005, 15:08 Оценка за ответ: 5