Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как извлечь текст из окна?

8.9K
15 сентября 2006 года
Kap
77 / / 10.09.2006
Как на апи извлечь текст из Edit, к примеру?
1.9K
15 сентября 2006 года
SABROG
242 / / 26.01.2006
 
Код:
char buf[512];
::GetWindowText(Edit1->Handle,buf,512);
::MessageBox(0,buf,0,MB_OK);


Можно еще более углубиться и использовать сразу Windows Messages:
WM_GETTEXT.
 
Код:
char buf[512];
::SendMessage(Edit1->Handle,WM_GETTEXT,(WPARAM)512,(LPARAM)buf);
::MessageBox(0,buf,0,MB_OK);
3.3K
16 сентября 2006 года
ShadyMan
191 / / 15.07.2006
Только надо учесть, что никакими стандартными методами извелечь текст из Edit'a чужой программы не получится - только из своей. А вот из всяких лэйблов и кэпшинов - пожалуйста.
1.9K
16 сентября 2006 года
SABROG
242 / / 26.01.2006
[QUOTE=ShadyMan]Только надо учесть, что никакими стандартными методами извелечь текст из Edit'a чужой программы не получится - только из своей. А вот из всяких лэйблов и кэпшинов - пожалуйста.[/QUOTE]
Это не правда. Специально поставил mousehook, чтобы получить Handle окна Edit из другой программы, вбил полученный Hwnd в другую программу и спокойно получил содержимое. Главная проблема в другом - как найти нужный Edit, если запущено много окон с классами TForm1 и TEdit. А если программа еще и Title постоянно меняет...
Но это не нереально.
8.9K
16 сентября 2006 года
Kap
77 / / 10.09.2006
Спасибо большое, но я так пробовал. И у меня на 8-й студии не работало. Дело было в том, что под буфер надо память выделять. Вот как выглядит моя функция:

LPTSTR GetEditText(HWND edit)
{
int n=GetWindowTextLength(edit);
LPTSTR ed=(LPTSTR)malloc(sizeof((LPTSTR)*(n+1)));
GetWindowText(edit,ed,n+1);
return ed;
}

Так работает. А хендл окна чужой программы можно узнать и через утилиту spy++. Она прямо со средой поставляется. Хэндэлы кажет.
3.3K
18 сентября 2006 года
ShadyMan
191 / / 15.07.2006
[QUOTE=SABROG]Это не правда. Специально поставил mousehook, чтобы получить Handle окна Edit из другой программы, вбил полученный Hwnd в другую программу и спокойно получил содержимое.[/QUOTE]
Да нет же, правда. "This function cannot retrieve the text of an edit control in another application" - цитата из msdn'a (функция GetWindowText). А потом, если б сам неоднакратно и безрезультатно не пробовал получать тексты edit'a, то ничего бы и не писал. Ты в какой ОС делал такие чудеса (в Windows 98 это не работает - 100%)? А edit'ы твои стандартные были?
9.8K
22 сентября 2006 года
c@Dr
15 / / 31.08.2005
[QUOTE=Kap]Спасибо большое, но я так пробовал. И у меня на 8-й студии не работало. Дело было в том, что под буфер надо память выделять. Вот как выглядит моя функция:

LPTSTR GetEditText(HWND edit)
{
int n=GetWindowTextLength(edit);
LPTSTR ed=(LPTSTR)malloc(sizeof((LPTSTR)*(n+1)));
GetWindowText(edit,ed,n+1);
return ed;
}

Так работает. А хендл окна чужой программы можно узнать и через утилиту spy++. Она прямо со средой поставляется. Хэндэлы кажет.[/QUOTE]
Я так понял вам нужно найти хендл чужого окна тогда:
Хендл который получаеш с помощью утилиты spy++ может меняться при разных условиях. Лучше найти окно с помощью функции FindWindow а потом уже сам компонент TEdit с помощью FindWindowEx
1.9K
22 сентября 2006 года
SABROG
242 / / 26.01.2006
Цитата:

Да нет же, правда. "This function cannot retrieve the text of an edit control in another application" - цитата из msdn'a (функция GetWindowText). А потом, если б сам неоднакратно и безрезультатно не пробовал получать тексты edit'a, то ничего бы и не писал. Ты в какой ОС делал такие чудеса (в Windows 98 это не работает - 100%)? А edit'ы твои стандартные были?


Windows2000, специально написал программу на BCB, куда впихнул TEdit. Запустил программу, получил хэндл Edit'a, написал другую программу, которая через WM_GETTEXT получила содержимое этого Edita.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог