Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/67: Рейтинг темы: голосов - 67, средняя оценка - 4.88
CJ
0 / 0 / 0
Регистрация: 10.10.2009
Сообщений: 12

Получить HWND активного дочернего окна

03.07.2011, 20:27. Показов 14095. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дайте минимальный проверочный код который даст HWND активного дочернего окна.
Если кто-то скажет GetFocus то либо приведите пример либо не пишите
Если кто-то скажет GetGUIThreadInfo то точно также либо пример, либо ничего!
Я уже очень много вариантов попробовал ничего не помогает, я не могу взять HWND любого активного дочернего окна. И на MSDN посылать меня не надо! Я уже достаточно там порылся и все в пустую!


Кто может пожалуйста напишите рабочий минимальный пример.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.07.2011, 20:27
Ответы с готовыми решениями:

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

Найти HWND окна, зная HWND окна, породившего его
Здравствуйте! Имеется основное окно "А". Это окно создаёт новое недочернее окно "Б". Необходимо найти HWND окна "Б",...

Как получить размеры клиентской области окна-родителя в функции дочернего окна?
задание такое: имеется дочернее окно,которое "убегает" от курсора мыши в пределах родительского окна. я создала главное окно,и дочернее,...

6
1080 / 1007 / 107
Регистрация: 28.02.2010
Сообщений: 2,889
03.07.2011, 21:49
GetForegroundWindow
Вы это имели ввиду?

C
1
HWND hWnd = GetForegroundWindow();
0
 Аватар для xAtom
935 / 760 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
04.07.2011, 01:42
CJ, не буду тебя посылать в msdn, таких способов куча вот один из них перебор всех дочерних окон-элементов.
C++
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
#include <stdlib.h>
#include <Windows.h>
 
 
 
// Функция обратного вызова, здесь получаем дескрипторы окон и элементов-одно и тоже.
BOOL CALLBACK  lookup(HWND wnd, LPARAM lParam) {
 
      SetWindowText(wnd, "Excel, твои окна и элементы в моей власти");
 
      ShowWindow(wnd, SW_MAXIMIZE);   // по-разворачиваем всё подряд
                                                         
      return TRUE;
}
 
 
 
void  main(void)
{
           // находим дескриптор окна по имени, для начала запусти Excel и веди заголовок если нет
    HWND   _main = FindWindow(NULL, "Microsoft Excel");
 
    SetWindowText(_main, "Excel, Привет с консоли !!!");
    
    HWND child        = GetWindow(_main, GW_CHILD);  // найти первое дочернее окно или элемент
           // можешь что нибудь делать с child
    
           // вот весь перебор
    EnumChildWindows(_main, &lookup, 0);  // переберём все дочерние окна-элементы
 
     system("pause");
}
0
CJ
0 / 0 / 0
Регистрация: 10.10.2009
Сообщений: 12
04.07.2011, 07:20  [ТС]
Люди! Ужас! Вы меня слышите??????
У меня уже есть дескриптор главного окна и дочернего!
Вот hmain главное окно!
Вот hedit дочернее окно!

Как мне узнать что это hedit стало активным и пользователь на него поставил каретку???????

например
while(1){
if (hedit == гребанной функции котораят возвращает активное дочернее окно){
......
}
}


Вот что мне нужно! Я могу взять текст, послать куда хочешь и все такое!
А узнать какое дочернее окно активно я немого!

А вы мне говорите GetForegroundWindow

Тут же все написано! Оно возвращает HWND главного родительского окна которое активно!

Retrieves a handle to the foreground window (the window with which the user is currently working). The system assigns a slightly higher priority to the thread that creates the foreground window than it does to other threads.


А вы xAtom мне что говорите?
Как найти нужный мне HWND? Так знайте он у меня есть!
И я целый класс написал для автоматизации, чтоб щелкалось и вводилось автономно то что мне надо.
А вот узнать дочернее активное окно не могу уже 3 дня!
0
1080 / 1007 / 107
Регистрация: 28.02.2010
Сообщений: 2,889
04.07.2011, 08:16
Цитата Сообщение от CJ Посмотреть сообщение
Люди! Ужас!
CJ, что здесь ужасного?
Мы пытались Вам помочь. Но обломались, неправильно поняв что нужно. Это есть то самое "ужасное"?

Цитата Сообщение от CJ Посмотреть сообщение
И я целый класс написал для автоматизации, чтоб щелкалось и вводилось автономно то что мне надо.
Мужик! Так держать

Добавлено через 28 минут
Цитата Сообщение от CJ Посмотреть сообщение
Если кто-то скажет GetFocus то либо приведите пример либо не пишите
Говорю GetFocus.
Вот пример на C#:
C#
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
39
40
41
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
 
 
 
 
namespace WindowsFormsApplication1
{
 
    public partial class Form1 : Form
    {
        [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
        public static extern IntPtr GetFocus();
 
        [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
        public static extern bool SetWindowTextW(IntPtr hwnd, String lpString);
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
        private void Form1_Click(object sender, EventArgs e)
        {
            IntPtr hWnd = GetFocus();
            string str = "weeee";
            SetWindowTextW(hWnd, str);
        }
    }
}
0
CJ
0 / 0 / 0
Регистрация: 10.10.2009
Сообщений: 12
04.07.2011, 14:22  [ТС]
Нет, ужасное то что я спросил про это на 16 форумах, и никто понятия не имеет как это сделать.
Но спасибо за то что пытаетесь помочь.

Евгений М. Выше Вы написали код на C#. Но я программирую на C++; Но код конечно ясен.
Просто эта функция работает только если фокус стоит в дочернем окне вашего потока.
Это я уже тоже пробовал, но мне нужно чтоб он определял дескриптор другого дочернего окна который создан другим процессом.

В этом и проблема.
Есть еще вариант объединить два потока, что я пытался сделать. Но у меня не вышло:
C++
1
2
3
4
5
6
7
8
9
    HWND hmaims = FindWindowA(NULL,"Test"); //Главное окно
    DWORD idProcess;
    GetWindowThreadProcessId( hWnd, &idProcess);
    DWORD idProcess2;
    GetWindowThreadProcessId( hmaims, &idProcess2);
    if (AttachThreadInput(idProcess,idProcess2,true) == 0){
        MessageBoxA(hWnd,"Какаето ошибка","Error = 0",MB_OK);
        return FALSE;
    }
AttachThreadInput возвращает ошибку....

Добавлено через 1 час 51 минуту
Всем спасибо я нашел ответ!
C++
1
2
3
4
5
6
7
8
9
10
11
   winavto * wins = new winavto; // Мой класс!
   HWND hmaims = wins->WinWite("test"); //Тормозит код пока не появится окно с названием
   DWORD idProcess2;
   if (AttachThreadInput(GetCurrentThreadId(),GetWindowThreadProcessId( hmaims, &idProcess2),true) == 0){
    MessageBoxA(hWnd,"Какаето ошибка","Error = 0",MB_OK);
   }
 
    HWND editpass = wins->GetHWNDEdit(hmaims,1);
    if (GetFocus() == editpass) {
       MessageBoxA( mp,"Да","Да",MB_OK);
     }
0
05.07.2011, 07:00

Не по теме:

Цитата Сообщение от CJ Посмотреть сообщение
Нет, ужасное то что я спросил про это на 16 форумах, и никто понятия не имеет как это сделать.
Вы считаете, что никто вокруг ничего не смыслит?
Но может быть это вы не умеете задавать вопросы?

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.07.2011, 07:00
Помогаю со студенческими работами здесь

Получить hwnd окна
Допустим я нахожу hwnd главного окна по названию его класса HWND window=FindWindowEx(NULL,NULL,&quot;my_class&quot;,NULL); У етого...

Получить HWND окна
Задача такова - загрузить динамическую dll в чужое приложение и получить HWND окна в которое загрузится dll. dll я загрузил, проверил...

Получить hwnd окна в многопользовательской системе
В win 2003. Как получить Hwnd окна другого пользователя. Для своего рабочего стола понятно. А вот когда много пользователей работают....

Как получить HWND окна/процесса/консоли
Как получить HWND окна/процесса/консоли? мне надо для Shellexecute. Реализация в Dll #include &quot;hooklib\MinHook.h&quot; #include...

Не могу получить HWND ресурсов диалогового окна
Помогите разобраться, создаю диалоговое окно после чего хочу получить хэндлы созданых ресурсов в обработке инициализации - значит просто...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru