2 / 2 / 1
Регистрация: 14.05.2015
Сообщений: 26

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

24.06.2017, 14:28. Показов 2828. Ответов 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,022
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru