Как узнать текст метки

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Romeo, Eugie

Ответить
msv
Сообщения: 3
Зарегистрирован: 03 авг 2004, 11:33

Как можно узнать текст метки (label.caption), которая находится в окне другой программы?
Аватара пользователя
AiK
Сообщения: 2287
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

см. GetWindowText
Даже самый дурацкий замысел можно воплотить мастерски
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

А дескриптор окна (первый параметр функции GetWindowText) нужно получать с помощью функции FindWindow.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
msv
Сообщения: 3
Зарегистрирован: 03 авг 2004, 11:33

С помощью FindWindow получил дескриптор окна в котором находится метка. А как получить дескриптор самой метки (EnumChildWindows не находит ее)?
Аватара пользователя
AiK
Сообщения: 2287
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

msv, запусти spy++ (или winsight32 если пользуешься борландовскими продуктами) и посмотри кто является её родителем.
Запросто на окне может лежать ещё что-то до лейбла.
Даже самый дурацкий замысел можно воплотить мастерски
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

AiK верно подметил, поспай немножко :)

Если подозрения подтвердяться, то в коде прораммы вызовишь

Код: Выделить всё

HWND FindWindowEx(
    HWND hwndParent,
    HWND hwndChildAfter,
    LPCTSTR lpszClass,
    LPCTSTR lpszWindow
);
используя в качестве первого параметра результат работы первого вызова FindWindow.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
msv
Сообщения: 3
Зарегистрирован: 03 авг 2004, 11:33

WinSight видит на форме кнопки, переключатели, а вот лейблы не видит. :(
И элементов управления, которые могут служить контейнером для метки, на форме тоже нет.
race1
Сообщения: 13
Зарегистрирован: 02 авг 2004, 13:03
Контактная информация:

TLabel is a nonwindowed control, у него нету хендла. у TStaticText есть хэндл, у TLabel нет. его нельзя найти findwindow
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Остаётся только написать новый текст поверх старого, используя Win GDI :)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить