Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2008, 23:57   #1
ActiveX
Пользователь
 
Регистрация: 30.01.2008
Сообщений: 14
По умолчанию Простейшая работа с чужим приложением...

В общем проблема такая. Есть сторонее приложение на форме которого находятся три компонента: Edit1.Text, Edit3.Text, Edit3.Text. В каждом из этих компонентов находится соответственно свой текст: Текст1, Текст2, Текст3. Текст заранее не известен - его и вообще там может не быть. В моем приложении также есть три компонента: Edit1.Text, Edit3.Text, Edit3.Text. Необходимо из стороннего приложения скопировать текст каждого из трех компонентов и вставить в соответствующие компоненты моего приложения. Пытался самостоятельно решить данную задачу - почти решил, единственная проблема заключается в том, что я смог скопировать только текст последнего по счету компонента стороннего приложения. Вот код:

Код:
Procedure GetText;
Var
parenthandle, handle : HWND;
text1, text3, text3 : PChar;
Begin
if FindWindow(Pchar('TMainForm'), 'Сторонее окно')<>0 then
Begin
parenthandle:=FindWindow(Pchar('TMainForm'), 'Сторонее окно');
handle:=FindWindowEx(parenthandle, 0, Pchar('TEdit'), nil);
GetMem(text1, 255*sizeof(char));
SendMessage(handle, WM_GETTEXT, 255, LongInt(pointer(text1)));
Edit1.text:=text1;
End;
В результате выполнения такого когда копируется текст всегда только самого последнего компонента стороннего окна(Edit3.Text).

Подскажите пожалуйста как сделать, чтобы не только из одного последнего компонента можно было текст копировать в свой компонент. Судя по всему проблема в нахождении handle компонентов стороннего приложения - но как их найти незнаю, т.к. текст который будет в компонентах содержаться заранее не известен - был бы известен - проблем бы не было с поиском, если только по классу искать, то удается таким образом только из последнего компонента скопировать текст(данный метод пригоден если на форме только один Edit). Заранее огромное спасибо.

Последний раз редактировалось ActiveX; 31.01.2008 в 01:18.
ActiveX вне форума Ответить с цитированием
Старый 31.01.2008, 08:17   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Судя по всему проблема в нахождении handle компонентов стороннего приложения - но как их найти незнаю, т.к. текст который будет в компонентах содержаться заранее не известен
Для таких случаев находить хендлы лучше через функции Enum(Child)Windows

Можно и FindWindowEx пользоваться тогда нужно его в цикле проходить и
во второй параметр там где у тебя 0 вставлять хендл найденного окна в предидущей итерации.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
память, занимаемая приложением Kn793 Общие вопросы Delphi 6 21.06.2008 14:51
Работа с чужим приложением ERASERROR Win Api 2 28.01.2008 15:22
работа с чужим окном RammFan Win Api 1 18.01.2007 20:21