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

Не получается найти дескриптор запущенного окна

02.06.2013, 21:09. Показов 1252. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
открываю процесс с помощью функции CreateProcess(), далее пытаюсь определить дескриптор окна нового процесса FindWindowEx(), но не могу понять где ошибка. Смысл программы в том что бы она запускала сама себя и при нажатии клавиши закрывала все свои копии. Помогите пожалуйста найти ошибку.
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
#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <locale>
#include <stdlib.h>
#include <conio.h>
using namespace std;
 
int main(int argc, char* argv[])
{
    setlocale(LC_ALL,"Russian");
    STARTUPINFO cif;
    ZeroMemory(&cif,sizeof(STARTUPINFO));
    PROCESS_INFORMATION pi;
    char fwname[1024]="C:\\Users\\Hunter\\Documents\\Visual Studio 2010\\Projects\\SPO_lab2\\Debug\\SPO_lab2.exe";
    HWND hWnd;
 
    cif.lpTitle="123";//"изменяю имя окна для упрощенной работы с ним
 
    if(argv[0][0]!='1')
    {
        CreateProcess(fwname,"1",NULL,NULL,TRUE,CREATE_NEW_CONSOLE,NULL,NULL,&cif,&pi);//создаю копию данной программы, отправляю значение 1 что бы перейти к выполнению другого кода
        hWnd=FindWindowEx(NULL,NULL,"ConsoleWindowClass","123");
        cout<<hWnd;
        if(getch()==27)//при нажатии ESC должно закрываться окно с именем "123"
        SendMessage(hWnd,WM_CLOSE,NULL,NULL);
    }
 
    if(argv[0][0]=='1')
    {
        cout<<"открыто"<<endl;
    }
    system("pause");
return 0;
}
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.06.2013, 21:09
Ответы с готовыми решениями:

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

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

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

2
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
02.06.2013, 21:12
Эрнест Казанцев, возможно, что твое окно еще не создалось к моменту вызова функции поиска. WaitForInputIdle может помочь. Либо spy++ чтобы убедиться, что ты ищешь то, что нужно.
1
Эрнест Казанцев
02.06.2013, 21:55
хм, действительно, много времени убил на поиски ошибки в функции FindWindowEx(), а оказывается нужно было просто сделать задержку, поставил getch() и все стало великолепно работать, спасибо!
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.06.2013, 21:55
Помогаю со студенческими работами здесь

Как найти дескриптор действительно активного окна?
Я поясню. Запускаю: #include &lt;windows.h&gt; #include &lt;stdio.h&gt; int main () { while (1) { Sleep (1000); printf...

Перерисовка окна другого процесса через дескриптор этого окна
Приветствую всех. Может кто-то знает, как перерисовать окно другого процесса через дескриптор (IntPtr) этого окна. Может апишная функция...

Найти дескриптор окна "Калькулятор"
Проблема в том ,что при определении дескриптора калькулятора выдается 0, т.е. хотя калькулятор и открыт с помощью WinExec(процедура...

Дескриптор окна
Из за чего эта ошибка? И как ее исправить?

Узнать дескриптор окна
Всем привет. В общем у меня такая проблема: запускается приложение =&gt; появляется главное окно (1-е) и сразу же появляется окно ввода логина...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
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. На борту пять. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru