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

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

24.06.2017, 14:28. Показов 2793. Ответов 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
8484 / 6151 / 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
8484 / 6151 / 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
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
24.06.2017, 20:53

Не по теме:

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



Добавлено через 1 минуту
Если нет дочерних окон то и читать нечего.
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru