Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/67: Рейтинг темы: голосов - 67, средняя оценка - 4.54
1 / 1 / 0
Регистрация: 02.03.2012
Сообщений: 16
1

Как передать данные в поле Edit другого приложения?

02.03.2012, 11:22. Показов 12243. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста как можно передать нужные данные в поле Edit другого приложения (не моего, исходников нет, просто исполняемый exe-файл имеется). Я поискал в Сети и нашел функцию
FindWindow - при помощи которой мне удалось сменить наиме нование заголовка окна. Но вот как получить доступ к конкретному объекту расположенному на форме к сожалению разобраться не смог. Подскажите пожалуйста кто знает как можно получить этот доступ. Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.03.2012, 11:22
Ответы с готовыми решениями:

Передать данные в ListView другого приложения
Добрый день. Подскажите как можно из одной программы (написанной мной в Delphi) передать listview...

Передать данные с поля Edit на сайт в поле name="name"
Здраствуйте как можно передать данные с поля Edit на сайт в поле <input type="text" name="name"...

Как вставить текст в Edit'ы другого приложения?
Не подскажите, как можно в Edit'ы другого приложения (не Delphi'ского) вставить текст?

Как передать данные в Activity из другого класса
При нажатии на кнопку, создается активити orgAdapter = new OrgAdapter(this, orgs); ...

17
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
02.03.2012, 11:38 2
никак
0
1 / 1 / 0
Регистрация: 02.03.2012
Сообщений: 16
02.03.2012, 11:43  [ТС] 3
Цитата Сообщение от Alex_pac Посмотреть сообщение
никак
Интересно, когда какой-либо элемент на форме получает фокус ввода, то это можно перехватить из другой программы? Может можно как-то по этому событию получить данные для доступа к объекту?
0
4117 / 999 / 191
Регистрация: 09.04.2009
Сообщений: 4,223
02.03.2012, 11:53 4
в интернете есть програмки для того чтобы выяснить хендел окна и елемента другого приложения, а передать текст можно SendKeys или SendMessage
0
1 / 1 / 0
Регистрация: 02.03.2012
Сообщений: 16
02.03.2012, 11:58  [ТС] 5
Цитата Сообщение от Jazon_deenAlt Посмотреть сообщение
в интернете есть програмки для того чтобы выяснить хендел окна и елемента другого приложения, а передать текст можно SendKeys или SendMessage
Спасибо, а не подскажите что за програмки?
0
4117 / 999 / 191
Регистрация: 09.04.2009
Сообщений: 4,223
02.03.2012, 12:00 6
вот что находитса на просторах интернета:
Delphi
1
2
3
4
5
6
7
8
//находишь чужое окно(findwindow); находишь edit, который будет дочерним окном (findwindowex или getwindow); 
procedure TForm1.Button1Click(Sender: TObject); 
 var wind,ediwind:HWND; 
 begin 
 wind:=findwindow('класс','имя'); 
 editwind:=findwindowex(wind,0,'класс','имя'); 
 sendmessage(editwind,wm_settext,0,lparam(pchar('text'))); 
 end;
для блокнота например
Delphi
1
2
3
4
5
6
7
procedure TForm1.Button1Click(Sender: TObject);
var note,edit:HWND;
begin
note:=findwindow('Notepad',nil);// notepad - класс окна (spy++ rulez)
edit:=findwindowex(note,0,'Edit',nil);// edit - тоже класс
sendmessage(edit,wm_settext,0,lparam(pchar(edit1.Text)));
end;
0
474 / 337 / 36
Регистрация: 31.05.2011
Сообщений: 1,162
02.03.2012, 12:01 7
Delphi
1
SendMessage(ХЕНДЛ ЭДИТА, WM_SETTEXT, 0, LParam(ТЕКСТ));
0
4117 / 999 / 191
Регистрация: 09.04.2009
Сообщений: 4,223
02.03.2012, 12:02 8
Wissend, я думаю их вагон и маленькая тележка всяких разных и разнообразных, но их обьеденяет то что их всех знает гугл
0
1 / 1 / 0
Регистрация: 02.03.2012
Сообщений: 16
02.03.2012, 13:42  [ТС] 9
Спасибо всем кто ответил, у меня получилось записать!
Только теперь не могу сообразить каким макаром мне записать такой же текст в другой edit?
Там просто на форме их 14 штук. Мне нужно во все вносить данные.
Помогите пожалуйста.
0
4117 / 999 / 191
Регистрация: 09.04.2009
Сообщений: 4,223
02.03.2012, 13:51 10
интуиция подсказывает что у каждого едита свой хендл... если решать вашу проблему используя фразу из русского варианта песенки из Покемонов то "Собери их всех!"(с)
0
1 / 1 / 0
Регистрация: 02.03.2012
Сообщений: 16
02.03.2012, 13:56  [ТС] 11
Цитата Сообщение от Jazon_deenAlt Посмотреть сообщение
интуиция подсказывает что у каждого едита свой хендл... если решать вашу проблему используя фразу из русского варианта песенки из Покемонов то "Собери их всех!"(с)
Ну да, интуиция подсказывает, однако... - как эту интуицию превратить в конкретный код, пока тямы не достает у меня... Я, конечно, предположил, что следует два раза вызвать функцию findwindowex
....

edit11:=findwindowex(wnd,0,'Tedit',nil);
edit22:=findwindowex(wnd,0,'Tedit',nil);
....
но. к сожалению, воз и ныне там...

как же собрать все хендлы Edit- ов принадлежащих конкретной форме?
Может существует функция которая способна собрать все хендлы (не только edit-ов) конкретной формы и записать их в массив?
0
4117 / 999 / 191
Регистрация: 09.04.2009
Сообщений: 4,223
02.03.2012, 14:13 12
Wissend, давайте помедетируем и подумаем чем должны отличатса результаты:
edit11:=findwindowex(wnd,0,'Tedit',nil);
edit22:=findwindowex(wnd,0,'Tedit',nil);
как мне кажетса они будут одинаковы... надо что-то менять в етой жизни... что бы такого поменять? давайте выясним что такое FindWindowEx...
если пренебригать таким мощьным инструментом как справка дельфи и пользоватса таким читерством как гугл то мы можем получить примерно такое:
Delphi
1
2
3
4
5
6
7
8
HWND FindWindowEx(
 
HWND hwndParent,      //  дескриптор родительского окна
 HWND hwndChildAfter,  //  дескриптор дочернего окна
 LPCTSTR lpszClass,    //  указатель имени класса
 LPCTSTR lpszWindow    //  указатель имени окна
 
);
давайте теперь думать что у нас разное в наших едитах... может быть ето родительское окно? или класс? хмм... как вы считаете? что отличает ваши едиты?
0
1 / 1 / 0
Регистрация: 02.03.2012
Сообщений: 16
02.03.2012, 14:15  [ТС] 13
Цитата Сообщение от Jazon_deenAlt Посмотреть сообщение
Wissend, давайте помедетируем и подумаем чем должны отличатса результаты:
edit11:=findwindowex(wnd,0,'Tedit',nil);
edit22:=findwindowex(wnd,0,'Tedit',nil);
как мне кажетса они будут одинаковы... надо что-то менять в етой жизни... что бы такого поменять? давайте выясним что такое FindWindowEx...
если пренебригать таким мощьным инструментом как справка дельфи и пользоватса таким читерством как гугл то мы можем получить примерно такое:
Delphi
1
2
3
4
5
6
7
8
HWND FindWindowEx(
 
HWND hwndParent,      //  дескриптор родительского окна
 HWND hwndChildAfter,  //  дескриптор дочернего окна
 LPCTSTR lpszClass,    //  указатель имени класса
 LPCTSTR lpszWindow    //  указатель имени окна
 
);
давайте теперь думать что у нас разное в наших едитах... может быть ето родительское окно? или класс? хмм... как вы считаете? что отличает ваши едиты?
да нет, вроде родительское окно одно и тоже , да и класс вроде не отличается...
0
4117 / 999 / 191
Регистрация: 09.04.2009
Сообщений: 4,223
02.03.2012, 14:18 14
*с надеждой* тогда может быть дескриптор дочернего окна?
0
1 / 1 / 0
Регистрация: 02.03.2012
Сообщений: 16
02.03.2012, 14:23  [ТС] 15
Цитата Сообщение от Jazon_deenAlt Посмотреть сообщение
*с надеждой* тогда может быть дескриптор дочернего окна?
А вот этого я понять честно сказать до конца не могу. Я так понимаю, что "дочернее окно" это окно которое связанно с главным окном формы. Но на моей форме вообще только одно окно...
Впрочем, если мы применяли эту функцию и вычленили "edit" - который судя по описанию функции можно считать за окно... то...тогда, вероятно они этими окнами отличаются... НО!!!
Я пробовал уже писать так:
...
edit11:=findwindowex(wnd,0,'Tedit',nil);
еdit22:=findwindowex(edit11,0,'Tedit',nil);
...
- не фига не получается.
А других хендлов формы я не знаю как получить.
0
474 / 337 / 36
Регистрация: 31.05.2011
Сообщений: 1,162
02.03.2012, 14:54 16
enumchildwindow позволит перейти на новую ступень эволюции
0
1 / 1 / 0
Регистрация: 02.03.2012
Сообщений: 16
02.03.2012, 15:34  [ТС] 17
Цитата Сообщение от БогДелфей Посмотреть сообщение
enumchildwindow позволит перейти на новую ступень эволюции
Чето не могу вкурить как она работает.
Судя по описанию:"
function EnumChildWindows(WndParent: HWnd; EnumFunc: TFarProc; lparam: Longint): Bool;

Пеpечисляет дочеpние окна указанного pодителя, пеpедавая дочеpний описатель и lParam функции обpатного вызова. Пеpечисление заканчивается, если функция обpатного вызова возвpащает нуль или если пеpечисляется последний дочеpний элемент.

Паpаметpы:
WndParent: Родительское окно пеpечисляемых дочеpних окон.

EnumFunc: Адpес экземпляpа пpоцедуpы функции обpатного вызова.
lParam: Значение, пеpеданное функции обpатного вызова."
- она нам возращает логическое значение. А шо нам с ним делать потом?
0
0 / 0 / 0
Регистрация: 04.03.2016
Сообщений: 1
16.04.2016, 10:19 18
0
16.04.2016, 10:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.04.2016, 10:19
Помогаю со студенческими работами здесь

Как передать данные из модуля в поле?
Как передать данные из модуля в поле с помощью Sql?

Как взять данные в поле формы из другого запроса
Доброго времени суток! Есть форма, необходимо взять данные из запроса( не присоединенного к...

Как числовые данные, введенные в поле edit, вывести в label текстом
Вывести значение и имя наименьшего из четырех введенных чисел a,b,c,d procedure...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru