Форум программистов, компьютерный форум, киберфорум
Delphi: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
130 / 109 / 22
Регистрация: 23.05.2015
Сообщений: 724

Ввод информации в текстовые поля стороннего приложения

23.05.2015, 19:24. Показов 3968. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые форумчане!

Столкнулся с такой проблемкой:

Нужно в чужом приложении(написанном на PowerBilder) найти элементы Edit или Grid (пока не знаю) и закинуть в них текст. Caption ов элементы не имеют.
Всего 49 ячеек (те что интересуют меня). данные для заброса я уже читаю из листа excel в массив - это работает.

Нахожу окно самого верхнего уровня на нём и расположена моя проблема ( у меня есть его заголовок и HWND).

Вопрос: Как добраться до Edit (ов)/Grid(a) и перебросить туда данные?

Заранее благодарен за любой совет.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.05.2015, 19:24
Ответы с готовыми решениями:

Вставить текстовые данные в Edit дочернего окна стороннего приложения
В общем имеется строковая переменная и окно стороннего приложения, имеющее дочернее окно класса Edit (класс узнал экспериментально с...

Получение информации из стороннего приложения
Доброго времени суток Уважаемому сообществу! Выручайте! Есть прога написанная прошлым кодером, исходники не сохранились, есть в этой...

Ввод данных в консоль стороннего приложения
нужно открыть консоль из формы и автоматически ввести в нее текст. например: cd C:\.... консоль открываю так: ...

22
130 / 109 / 22
Регистрация: 23.05.2015
Сообщений: 724
26.05.2015, 21:51  [ТС]
Студворк — интернет-сервис помощи студентам
Посмотрел по Spy++ процессы и выяснил что мой модуль pbdw80 (на телодвижения в окне откликается только он)
имеет Window Handle 000F027E Caption "" отсутствует ClassName pbdw80 Class Atom C1СС Подробнее на рис.
Миниатюры
Ввод информации в текстовые поля стороннего приложения   Ввод информации в текстовые поля стороннего приложения   Ввод информации в текстовые поля стороннего приложения  

Ввод информации в текстовые поля стороннего приложения  
0
130 / 109 / 22
Регистрация: 23.05.2015
Сообщений: 724
27.05.2015, 11:36  [ТС]
Собрался с мыслями...
Такой код
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
rocedure TForm1.Button1Click(Sender: TObject);
var h,sh: integer;
SearchedWnd : HWND;
 EDITCtrl : HWND;
begin
HexToWord('000F027E');
Memo1.Lines.Clear;
// SearchedWnd := FindWindow(nil, 'Заголовок искомого окна');
 SearchedWnd := FindWindow(nil, 'Изменение тарифа');
//*****Это работает*******
//  if SearchedWnd <> 0 then
// ShowMessage('Найдено главное окно') else ShowMessage('Не найдено главное окно');
//************************
     if SearchedWnd <> 0 then
     begin
      ShowMessage('Найдено главное окно');
     end
      else ShowMessage('Не найдено главное окно');
 
 EDITCtrl := FindWindowEx(SearchedWnd, 0, 'pbdw80', '');
  if EDITCtrl <> 0 then
  begin
  ShowMessage('Найдено дочернее окно - ');
   EnumChildWindows(EDITCtrl, @blah, 1);
  Form1.Memo1.Lines.add('===============================');
   EDITCtrl := GetNextWindow(EDITCtrl,GW_HWNDNEXT);
   EnumChildWindows(EDITCtrl, @blah, 1);
  Form1.Memo1.Lines.add('===============================');
   EDITCtrl:= FindWindowEx(EDITCtrl, 0, 'TEdit', '');
   SendMessage(EDITCtrl, WM_PASTE, 0, Integer(PChar('123456789')));
  end
    else
   begin
    ShowMessage('Не найдено первое дочернее окно');
   end;
 // SendMessage(EDITCtrl, WM_SETTEXT, 0, Integer(PChar('123456789')));
 
end;
Работает - добавляет в Memo 5 Edit (ов) 3й с низу мой (тот который реагирует на системные сообщения при обращении к искомому элементу)

Осталось научить его тому что мне нужно...

Добавлено через 11 часов 32 минуты
На данный момент имеем такой код
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function blah( HWnd : HWnd; Param : LParam):Boolean;stdcall;
var a: pchar;
begin
 a:= stralloc(256);
 getclassname(hwnd, a, 255);
 Form1.Memo1.Lines.add(a);
 strdispose(a);
 Result := true; {set to false to stop enumeration}
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var h,sh: integer;
SearchedWnd : HWND;
 EDITCtrl : HWND;
begin
Memo1.Lines.Clear;
 SearchedWnd := FindWindow(nil, 'Изменение тарифа');
     if SearchedWnd <> 0 then
     begin
      ShowMessage('Найдено главное окно');
     end
      else ShowMessage('Не найдено главное окно');
 EDITCtrl := FindWindowEx(SearchedWnd, 0, 'pbdw80', '');
  if EDITCtrl <> 0 then
  begin
  Form1.Memo1.Lines.add('============');
   EDITCtrl := GetNextWindow(EDITCtrl,GW_HWNDNEXT);
   EnumChildWindows(EDITCtrl, @blah, 1);
  Form1.Memo1.Lines.add('============');
   EDITCtrl:= FindWindowEx(EDITCtrl, 0, 'TEdit', '');
  SendMessage(EDITCtrl, WM_PASTE, 0, Integer(PChar('123456789')));
  end
    else
   begin
    ShowMessage('Не найдено дочернее окно');
   end;
 // SendMessage(EDITCtrl, WM_SETTEXT, 0, Integer(PChar('123456789')));
end;
И такой результат:
============
Edit
Edit
Edit
Edit
Edit
============
Нужно подобраться к среднему Edit (У). Если кто знает как подскажите плиз...
Заголовка у Edit (а) нет.
0
130 / 109 / 22
Регистрация: 23.05.2015
Сообщений: 724
29.06.2015, 13:13  [ТС]
Спасибо всем, кто помогал!
Добраться к БД оказалось легче.
И на данный момент TarifWizard 1.0 уже работает
Миниатюры
Ввод информации в текстовые поля стороннего приложения  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.06.2015, 13:13

Ввод данных в окно стороннего приложения
В инете искал но не нашел работающего кода. Private Declare Function FindWindow Lib &quot;user32&quot; Alias &quot;FindWindowA&quot; (ByVal...

Ввести данные в поля стороннего приложения
Есть программа. имеет два поля пароль и кнопка. Нужно ввести и нажать кнопку программно. Пароль знаю

Запуск стороннего приложения, отправка сообщений, получение информации с его окон
Цель - написать программу, которая должна обращаться ко внешней программе-калькулятору, вводить в неё некоторые значения, запускать её...

Как запретить ввод определенных символов в текстовые поля
Всем доброго вечера. Есть несколько проблем, и голова уже плохо соображает, со вчерашнего дня сижу с программой... В общем, форма, на ней...

Расчет по формуле. Ввод и вывод, используя текстовые поля
Помогите пожалуста!Нужно сделать прогу которая рассчитывает значение по формуле : x=100/ n +y , значения n,m должны вводиться через...


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

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы Кратко. . .
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем **Полевые заметки о двухнедельной совместной работе**. . .
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru