Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/41: Рейтинг темы: голосов - 41, средняя оценка - 4.88
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705

Как найти дескриптор действительно активного окна?

15.08.2012, 02:47. Показов 8305. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я поясню. Запускаю:

C++
1
2
3
4
5
6
7
8
9
#include <windows.h>
#include <stdio.h>
 
int main () {
 while (1) {
  Sleep (1000);
  printf ("%x\n", GetForegroundWindow ());
 }
}
А затем включаю текстовый редактор, например bred и наблюдаю его дескриптор. Но! Всё-то дело в том, что в текстовом редакторе да и во многих других программах, не одно окно, а несколько. Мне-то нужен дескриптор рабочей части, чтобы я потом мог программно написать что-нибудь в окне. А я получаю дескриптор, извиняюсь за выражение чуть ли не рамки бреда. А рамке посылать сообщение бесполезно, всё равно ничего не напечатается. Как быть? Спасибо, кто откликнется.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.08.2012, 02:47
Ответы с готовыми решениями:

Как получить дескриптор дочернего активного окна?
Есть дескриптор (HWND hWnd) какого-то окна (левого, не относящегося к моей программе). Нужно получить дескриптор дочернего окна, которое...

Нужно получить дескриптор окна имея дескриптор контрола
Нужно получить дескриптор окна имея дескриптор контрола, подскажите как

Как получить дескриптор активного окна?
Перебрать все открытые окна? Какой признак есть у активного окна?

10
 Аватар для alexey31415
60 / 60 / 7
Регистрация: 16.05.2010
Сообщений: 632
15.08.2012, 03:03
тут наверно дело в том,что в главном окне создаются дочерние окна,которые тебе и нужны,а ты находишь главное окно
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
15.08.2012, 03:19  [ТС]
Да, так. Вопрос открыт.
0
 Аватар для alexey31415
60 / 60 / 7
Регистрация: 16.05.2010
Сообщений: 632
15.08.2012, 04:20
тогда попытайтесь искать дочерние окна
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
17.08.2012, 01:51  [ТС]
Программа должна быть универсальной. Я могу, конечно, найти дескриптор рабочей области бреда. Но это будет уже программа написанная ПОД бред. А мне надо чтобы она определяла активное окно, какой бы программой оно ни было создано. Бредом, блокнотом, браузером, ещё чем-то.
0
 Аватар для alexey31415
60 / 60 / 7
Регистрация: 16.05.2010
Сообщений: 632
17.08.2012, 02:22
это вряд ли,каждая программа уникальна,у каждой своё кол-во дочерних окон и сделать универсальную программу будет тяжело
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
17.08.2012, 02:34  [ТС]
Да, но примеры же есть. Например Spy++ безошибочно определяет хэндл окна над которым стоит курсор.
0
 Аватар для alexey31415
60 / 60 / 7
Регистрация: 16.05.2010
Сообщений: 632
17.08.2012, 02:59
ну так вы сказали всё
Цитата Сообщение от kravam Посмотреть сообщение
определяет хэндл окна над которым стоит курсор
как я понял,вы просто хотите программно определять хэндл окна
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
17.08.2012, 11:07  [ТС]
Активного окна, добавлю
0
 Аватар для _Lamer
9 / 9 / 1
Регистрация: 16.11.2010
Сообщений: 33
17.08.2012, 21:22
kravam,
в теории можешь перебирать дочерние окна рамки и анализироать "видимость" и класс окна
C++
1
2
IsWindowVisible(hWnd)
GetClassName(hWnd, pszBuffer, BUFFLEN)
зная класс, можно предположить что это окно для ввода текста
Создашь список "известных" классов, если полученный есть в списке - то все ок
если нет то либо нет окна для ввода текста,
либо данный вид приложения "не поддерживается" твоей прогой.

Добавлено через 6 часов 20 минут
активное окно - это окно, которое имеет высший Z-порядок (если не ошибся)
узнать активно ли окно - по его Z-порядку
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
18.08.2012, 09:14
Цитата Сообщение от kravam Посмотреть сообщение
Например Spy++ безошибочно определяет хэндл окна над которым стоит курсор.
Потому что есть WinAPI ф-ция получить хэндл окна под курсором.

Добавлено через 3 минуты
Точнее можно сделать так:
GetCursorPos()
WindowFromPoint()
запамятовал...

Добавлено через 6 минут
вот нагуглил
C++
1
2
hwnd = GetDesktopWindow();
focus = GetFocus(hwnd);
не проверял
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.08.2012, 09:14
Помогаю со студенческими работами здесь

Не получается найти дескриптор запущенного окна
открываю процесс с помощью функции CreateProcess(), далее пытаюсь определить дескриптор окна нового процесса FindWindowEx(), но не могу...

С помощью WinApi функции найти дескриптор окна
static extern IntPtr FindWindow ( string lpClassName, string lpWindowName ); static extern int gwt ( ...

Не получается найти дескриптор окна с одинаковым классом
Знаю, что нужно смотреть в сторону EnumChildWindows, но что то у меня не получаеться. Вот скриншот

Как узнать дескриптор окна приложения?
Здравствуйте, в user32.dll есть такая функция: SetForegroundWindow(hWnd) Понадобилось мне вывести окно наверх экрана. Дескриптор...

Как получить дескриптор дочернего окна?
Суть программы такова, есть диалоговое окно, реализовать такую функциональность, зажимаем левую кнопку мыши, тянем её, отпускаем и получаем...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru