Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2014.06.15;
Скачать: [xml.tar.bz2];

Вниз

Ввести текст (в 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2014.06.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.101 c
2-1377332433
Jimmy
2013-08-24 12:20
2014.06.15
Анимационный Gif с помощью RX


3-1297844761
leonidus
2011-02-16 11:26
2014.06.15
ADO и ошибка "Класс не зарегистрирован"


3-1298535358
Очень злой
2011-02-24 11:15
2014.06.15
ADO. Работа с двумя провадерами


2-1377425963
vasa777
2013-08-25 14:19
2014.06.15
сразу в результ


15-1384955382
Torry
2013-11-20 17:49
2014.06.15
Но вот, пора





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский