Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как поместить текст в Edit, находящийся в окне чужой проги?


S&G ©   (2002-08-06 13:49:00) 

Доброго времени суток!

Возникла тут у меня большая трабла. Может кто сталкивался с ней из великого ALL-а и знает, как ее победить?

Суть: есть некая прога, у которой в окне есть edit. И есть моя прога, которой надо поместить текст в этот самый эдит. (естесно, все под виндами). Как это сделать? Я мыслю, надо эмулировать нажатия клавиш путем посылки соответсвующих сообщений типа WM_KEYDOWN, WM_KEYUP и т.д. , предварительно узнав хендл. Ну поразвлекался я так... Весело было, но ни фига не работает. Потом я взял старый добрый Spy++ и посмотрел, какие мессаги происходят в эдите при нажатии клавиш. Попробовал проэмулировать их из своей проги. И вновь - "кликну, а в ответ тишина..." :) Такие вот пирожки.

Может, кто подскажет че-нить интересное по этому вопросу?

Заранее ОГРОМНОЕ спасибо!

S&G


S&G   (2002-08-08 15:45:00) [1]

Чтобы получить хендл эдита, надо взъюзнуть FindWindowEx()

Но есть там одна очень тонкая вещь, на которую я убил пару часов. Первый параметр - хендл родителя, т.е. окна, на котором эдит лежит. Это просто. А вот второй - хендл первого чайлда. По логике туда надо пихнуть NULL. Но не тут-то было! Оказалось, второй параметр должен быть такой же, как и первый, тогда ты сможешь находить хендлы эдитов, кнопарей и т.д. И будет тебе радость! :)

Удачи!


Song   (2002-08-07 16:21:00) [2]

FindWindowEx(), GetWindow()


Gari   (2002-08-07 15:53:00) [3]

А скажите мне уважаемые господа, каким образом мне получить handle окна и edit?


S&G   (2002-08-07 11:30:00) [4]


Спасибо, Друг!

Да пребудет с Тобой Сила!

p.s. Как я вскоре установил, корректнее будет

SendMessage( hwnd, WM_SETTEXT, 0, LPARAM(LPCTSTR(str)) )

Но все равно СПАСИБО! Выручил :)
Удачного дня!


ilg   (2002-08-07 11:23:00) [5]

Это делается так:

Var str:string;
h:hWnd;

str:="Это мой текст!";
sendmessage(h,WM_SETTEXT,0,Integer(PChar(str)));
,
где h- handle того самого Edit.
Рад, если помог!


Song   (2002-08-06 14:12:00) [6]

WM_SETTEXT,WM_PASTE


Наверх

Титульная страница Поиск, карта сайта Написать письмо