Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.06.15;
Скачать: CL | DM;

Вниз

Ввести текст (в TEdit) и нажать кнопку (TButton) в другой проге   Найти похожие ветки 

 
TComponent ©   (2010-03-20 23:13) [0]

На форме программы имеются строка ввода (TEdit) и кнопка (TButton). Как из другой программы программно ввести в TEdit нужный текст и нажать на кнопку? Название программы, заголовок формы, идентификаторы строки ввода и кнопки известны: допустим – Project1, Form1, Edit1, Button1.


 
tippa ©   (2010-03-21 09:18) [1]

H1:=FindWindow(nil,"Form1");//хэндл проги
H2:=FindWindowEx(H1,0,"Button","Button1");//хэндл кнопки
SendMessage(H2,BM_CLICK,0,0);//нажать на кнопку
H3:=FindWindowEx(H1,0,"Edit","Edit11");//хэндл эдита
SendMessage(H3,WM_SETTEXT,0,lparam(LPCTSTR("Вводимый текст")));//посылаешь текст в эдит


 
tippa ©   (2010-03-21 09:37) [2]

сори, "Button"->"TButton", "Edit"->"TEdit", "Edit11"->"Edit1"


 
TComponent ©   (2010-03-21 16:39) [3]

Проверил. Хэндлы эдита и кнопки не определяются (h2=0, h3=0). И, наверно, поэтому не работают сообщения для них. :(


 
tippa ©   (2010-03-21 18:26) [4]

Логично, код в студию.


 
TComponent ©   (2010-03-21 20:52) [5]

procedure TMaiFrm.Item1Click(Sender: TObject);
var
 H, H3, H2: HWND;
begin
H:=FindWindow(nil, "Form1");
 if H<>0 then
 begin
 H3:=FindWindowEx(H,0,"TEdit","Edit1");
   if H3<>0 then ShowMessage("хэндл эдита"); //сообщение не появляется
 SendMessage(H3,WM_SETTEXT,0,lparam(LPCTSTR("UPT")));
 H2:=FindWindowEx(H,0,"TButton","Button1");
   if H2<>0 then ShowMessage("хэндл кнопки"); //сообщение не появляется
 SendMessage(H2,BM_CLICK,0,0);
 end;
end;


 
DVM ©   (2010-03-21 21:14) [6]

с чего вы взяли H3:=FindWindowEx(H,0,"TEdit","Edit1"); ?
Классы окон узнать неплохо бы для начала. Spy++ в руки и вперед.


 
TComponent ©   (2010-03-21 22:15) [7]

Подскажите, откуда можно БЕЗ ПРОБЛЕМ скачать Spy++?


 
tippa ©   (2010-03-21 22:37) [8]

http://spypp.narod.ru/


 
TComponent ©   (2010-03-22 00:55) [9]


> DVM ©   (21.03.10 21:14) [6]
>
> с чего вы взяли H3:=FindWindowEx(H,0,"TEdit","Edit1"); ?
>
> Классы окон узнать неплохо бы для начала. Spy++ в руки и
> вперед.

Значение какого параметра из свойств, к примеру, нашего TEdit"a считать классом окна (по проге Spy++)?

Если брать хэндл "окна" эдита, то всё работает, но это не решение, т.к. после перезапуска проги с эдитом хэндл изменяется ...


 
DVM ©   (2010-03-22 01:03) [10]


> Значение какого параметра из свойств, к примеру, нашего
> TEdit"a считать классом окна (по проге Spy++)?

Который Class Name на закладке Class в окне которое появляется если дважды щелкнуть по окну в дереве окон Spy++


 
Германн ©   (2010-03-22 01:40) [11]


>
> Значение какого параметра из свойств, к примеру, нашего
> TEdit"a считать классом окна (по проге Spy++)?
>
> Если брать хэндл "окна" эдита, то всё работает, но это не
> решение, т.к. после перезапуска проги с эдитом хэндл изменяется
> ...
>

Похоже без чтения учебников тут не обойтись. Спутать класс окна с хэндлом окна способен только неуч.


 
TComponent ©   (2010-03-22 17:24) [12]


> DVM ©   (21.03.10 21:14) [6]
>
> с чего вы взяли H3:=FindWindowEx(H,0,"TEdit","Edit1");?
>
> Классы окон узнать неплохо бы для начала. Spy++ в руки и
> вперед.



> Который Class Name на закладке Class в окне которое появляется
> если дважды щелкнуть по окну в дереве окон Spy++


Не знаю, как у Вас, но в той проге Spy++, которую скачал я Class Name на закладке Class=TEdit. Поэтому я и задал вопрос: значение класса окна определённое прогой Spy++ =TEdit, что вызывает непонимание сообщения № [6].


> Похоже без чтения учебников тут не обойтись. Спутать класс
> окна с хэндлом окна способен только неуч.


Читать надо ВНИМАТЕЛЬНО, если хотите КОНСТРУКТИВНО прокритиковать что-то! Я потому и спросил про класс окна, т.к. он равен TEDit в проге spy++. А про хэндл окна я сказал, потому его применение решает задачу, но только для одного сеанса работы проги с эдитом.

И, вообще, Вам, Германн, следует прочитать Правила поведения на форумах!


 
DVM ©   (2010-03-22 18:17) [13]


> TComponent ©   (22.03.10 17:24) [12]


> что вызывает непонимание сообщения № [6].

Я не говорю что класс и имя окна обязательно другие, я спросил лишь о том, точно ли вы уверены в названиях. Ибо если что-то одно будет не таким, то ничего найдено само собой и не будет. Это качается и полей ввода и самой формы. Например, я не могу гарантировать, что вы нашли оно той формы что требуется, ибо может быть несколько таких окон.


 
DVM ©   (2010-03-22 18:20) [14]


> TComponent ©

То что возвращает H:=FindWindow(nil, "Form1"); равно хендлу искомого окна в Spy++ ? (он может подсветить нужное окно рамкой)

Сдается мне что у тебя два окна Form1 (одно из той программы в которой ты хочешь нажимать кнопки, а второе из той программы которая должна кнопки нажимать) и твой код берет не то что надо.


 
TComponent ©   (2010-03-22 21:17) [15]

Заработало! Нашёл ошибку!
Благодарю за помощь tippa и DVM!!!


 
Германн ©   (2010-03-23 02:05) [16]


> И, вообще, Вам, Германн, следует прочитать Правила поведения
> на форумах!


> Заработало! Нашёл ошибку!

Правила я знаю наизусть.
А вот книжки тебе всё же прочитать полезно. Ибо "метод ненаучного тыка" пригоден только некоторым.

Ну и формирование своих сообщения таким вот образом:

> Значение какого параметра из свойств, к примеру, нашего
> TEdit"a считать классом окна (по проге Spy++)?
>
> Если брать хэндл "окна" эдита, то всё работает, но это не
> решение, т.к. после перезапуска проги с эдитом хэндл изменяется
> ...
>

тоже свидетельствует о недостатке образования.


> Читать надо ВНИМАТЕЛЬНО, если хотите КОНСТРУКТИВНО прокритиковать
> что-то!

Читаю я внимательно. Именно поэтому и отреагировал КОНСТРУКТИВНО



Страницы: 1 вся ветка

Текущий архив: 2014.06.15;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.008 c
15-1386016202
Юрий
2013-12-03 00:30
2014.06.15
С днем рождения ! 3 декабря 2013 вторник


15-1384363415
Inflame123
2013-11-13 21:23
2014.06.15
Посоветуйте литературу


4-1269116023
TComponent
2010-03-20 23:13
2014.06.15
Ввести текст (в TEdit) и нажать кнопку (TButton) в другой проге


15-1385489716
Абориген
2013-11-26 22:15
2014.06.15
Чего бы знатное почитать?


2-1376832265
Вова
2013-08-18 17:24
2014.06.15
Как сэмулировать HID устройство, ничего не втыкая в комп?