Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
2 / 2 / 1
Регистрация: 14.05.2015
Сообщений: 26

Поиск текста в чужом окне (FindWindow/EnumChildWindows)

24.06.2017, 14:28. Показов 2842. Ответов 7

Студворк — интернет-сервис помощи студентам
Здравствуйте.
1. Есть программа UnderC, интерпретатор запускается командной строкой ucw.exe task.cpp
2. Результат выполнения выглядит как простое окно (memo) и в нем текст (ответ интерпретации)
Проблема в том, что мой код не видит дочернего окна, в котором размещается ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <windows.h>
#include <iostream.h>
#include <conio.h>
 
BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam )
{
 cout << "Child hwnd :" << hwnd << endl;
 return true;
}
 
void main()
{
 char buffer[512];
 ZeroMemory(buffer,512);
 HWND wnd = FindWindow(NULL, "task.cpp [Press Any Key]");
 if(wnd!=NULL)
 {
  SendMessage(wnd, WM_GETTEXT, 512, (LPARAM)buffer);
  cout<<buffer<< endl;
  ::EnumChildWindows(wnd, (WNDENUMPROC)EnumChildProc, NULL);
 } 
 getch();
Подскажите, как программно считать текст ответа из окна интерпретатора.
Заведомо благодарен за помощь.
Вложения
Тип файла: zip UnderC.zip (295.0 Кб, 6 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.06.2017, 14:28
Ответы с готовыми решениями:

Нажать кнопку в чужом окне
Есть программа Steam нужно в ней нажать на кнопку &quot;Создать новый аккаунт&quot; Пробовал разные способы... И еще условие таково что сам Steam...

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

2 окна с одним классом ComboBox на одном окне, FindWindow
Необходимо вставить текст в ComboBox стороннего окна. Возникла проблема в поиске ComboBox в окне сторонней программы. В окне находится...

7
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
24.06.2017, 14:46
GetWindowText()
0
2 / 2 / 1
Регистрация: 14.05.2015
Сообщений: 26
24.06.2017, 18:38  [ТС]
C++
1
2
3
4
5
6
7
char buffer[512];
 ZeroMemory(buffer,512);
 HWND wnd = FindWindow(NULL, "task.cpp [Press Any Key]");
 if(wnd!=NULL)
 {
  GetWindowText(wnd, buffer, GetWindowTextLength(wnd)+1);
 }

выдает только текст шапки ("task.cpp [Press Any Key]"), а меня интересует как добраться до результата "10"

п.с. EnumChildWindows (из первого поста) ничего не выдает для даного окна.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
24.06.2017, 18:42
Ну так нужно хендл дочернего окна, а не родительского подставлять в GetWindowText()
Для определения типа окна используйте программы Poz_Handle или Spy++
0
2 / 2 / 1
Регистрация: 14.05.2015
Сообщений: 26
24.06.2017, 19:53  [ТС]
Уважаемый Avazart у окна нет дочерных окон ! Я потому тут и пишу, что бы мне помогли разобраться
вот скриншоты:




0
2 / 2 / 1
Регистрация: 14.05.2015
Сообщений: 26
24.06.2017, 20:13  [ТС]
В первом посте а архиве (UnderC.zip) сам интерпритатор, запустите (ucw.exe task.cpp) и посмотрите сами.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
24.06.2017, 20:53

Не по теме:

Да не фиг мне делать запускать себя на машине стрёмные экзешники...



Добавлено через 1 минуту
Если нет дочерних окон то и читать нечего.
0
place status here
 Аватар для gunslinger
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,023
24.06.2017, 21:04
Тебе нужно определить хэндл элемента окна, а текст из него брать с помощью SendMessage или PostMessage (где первым параметром будет хэндл элемента, вторым - WM_GETTEXT).

Пример использования:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
HWND NextWindowElement(HWND h, LPCTSTR fasdClass, LPCTSTR fasdWindow, int level)
{
  HWND h2 = NULL;
  for(int i = 0; i < level; i++)
    h2 = FindWindowEx(h, h2, fasdClass, fasdWindow);
  return h2;
}
 
HWND hWnd = FindWindow("SkinDialog", "LAN Game");
HWND hWnd2 = NextWindowElement(hWnd, "Static", NULL, 1);
char caption[100];
if (IsWindow(hWnd2))
  SendMessage(hWnd2, WM_GETTEXT, sizeof(caption), (LPARAM)caption);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.06.2017, 21:04
Помогаю со студенческими работами здесь

Поиск текста в окне
Здравствуйте. Прошу подсказать мне вот какую вещь: при работе в Win приложениях после нажатия клавиш Ctrl+F (стандарт), появляется диалог...

Рисование в чужом окне
Дано окно чужой программы. Требуется что-то на нем нарисовать. Скажем, дырку в том месте, куда мышкой кликнули. Гуглил на эту тему,...

Рисование в чужом окне
Собственно, я понимаю как рисовать, мне больше интересно 2 момента: 1) Если я просто буду рисовать на окне, то при его перерисовке всё...

Клик в чужом окне
Как можно реализовать множественный клик правой кнопкой мыши в чужом окне?

Создание кнопки в чужом окне
Как создать кнопку в чужом окне? Заранее спасибо!


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru