powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как определить имя или хендл окна по имени процесса.
18 сообщений из 18, страница 1 из 1
Как определить имя или хендл окна по имени процесса.
    #34101974
hkus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Допустим у меня имя процесса Opera.exe Как же мне зная только это узнать что там в окне или получить хендл окна ? Такое вообще возможно ?
...
Рейтинг: 0 / 0
Как определить имя или хендл окна по имени процесса.
    #34102017
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FindWindow
...
Рейтинг: 0 / 0
Как определить имя или хендл окна по имени процесса.
    #34102019
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только это по имени окна
...
Рейтинг: 0 / 0
Как определить имя или хендл окна по имени процесса.
    #34102022
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HWND h = FindWindow("Класс_Opera", "Название_окна");
FindWindowEx(h, NULL, "класс эл. управления внутри", "название окна");

или

GetWindow(c поиском child'ов см. msdn)
--------------------------------------------------------------
[подпись с другого сайта]
...
Рейтинг: 0 / 0
Как определить имя или хендл окна по имени процесса.
    #34102193
hkus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В том-то и дело что мне нужно не зная имени окна, но зная что это оконное приложение, как-то выйдить по имени процесса имя главного окна. Вот в чем весь калинкор.
...
Рейтинг: 0 / 0
Как определить имя или хендл окна по имени процесса.
    #34102240
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hkusВ том-то и дело что мне нужно не зная имени окна, но зная что это оконное приложение, как-то выйдить по имени процесса имя главного окна. Вот в чем весь калинкор."Калинкор" это от слова "калинка", да?
Почитай Букварь, научись задавать вопросы, тогда получишь ответ.
...
Рейтинг: 0 / 0
Как определить имя или хендл окна по имени процесса.
    #34102451
hkus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl, да я как-то и без тебя разобрался
...
Рейтинг: 0 / 0
Как определить имя или хендл окна по имени процесса.
    #34103819
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EnumWindows + GetWindowModuleFileName ?
...
Рейтинг: 0 / 0
Как определить имя или хендл окна по имени процесса.
    #34106284
UlanOf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hkusДопустим у меня имя процесса Opera.exe Как же мне зная только это узнать что там в окне или получить хендл окна ? Такое вообще возможно ?
Не совсем понял что тебе нужно... но в вот...
Перебираем все процессы и провереяем если они оконные и тд..
Код: plaintext
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.
void __fastcall MyThreadWindows::AllWind()
{ int i= 0 ;
  HANDLE hSnapshot;
  HWND H=FindWindow(NULL,""); // текущее окно;
  char Pch[ 128 ],Test[ 100 ];
  TListItem  *ListItem;    // указатель
  Main->ListAllWindows->Clear();
     /*tagPROCESSENTRY32 lppe;может пригодится*/

     /****          Снимок процессов        ***/
     hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,  0 );
       if (hSnapshot == INVALID_HANDLE_VALUE)
         {
         ShowMessage("Ошибка цикла!");
         }

     /*****     Перечисляем окна     *****/
     do
       {
         if  (IsWindow(H))                  //Проверим полученный хендл
           {
             if (IsWindowVisible(H))
               {
                 if (GetWindowText(H,Pch,sizeof(Pch))!=NULL)
                   {
                   /*пытаемся найти родителя этого окна,*/
                   /*если он NULL то значит оно главное*/
                     if (GetWindow(H,GW_OWNER)==NULL)
                       {
                       ListItem = Main->ListAllWindows->Items->Add();
                       ListItem->Caption = Pch;
                       //Выводим названия окон
                       }
                   }
               }
           }
       H=GetNextWindow(H,GW_HWNDNEXT);
       }
     while (H!=NULL);
  CloseHandle(hSnapshot);
  CloseHandle(H);
  }
...
Рейтинг: 0 / 0
Как определить имя или хендл окна по имени процесса.
    #34106561
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такое невозможно, поскольку у процесса может быть много окон.
...
Рейтинг: 0 / 0
Как определить имя или хендл окна по имени процесса.
    #34106811
UlanOf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivТакое невозможно, поскольку у процесса может быть много окон.
Код работает...100%... А у процесса вообще может не быть окон, что мы и проверяем если прочитать внимательно...И Главное окно родитель есть в любом оконном приложении...
При выполнении этой процедуры получаем список запущенных программ на компьютере...
+ ProgramManager - главное окно приложения Windows, если попытаться его закрыть то появлятся сообщение о выборе завершить работу...перезагрузится или тд...
...
Рейтинг: 0 / 0
Как определить имя или хендл окна по имени процесса.
    #34106812
UlanOf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UlanOf[quot MasterZiv]Такое невозможно, поскольку у процесса может быть много окон.
Если ты сомневаешься могу *.exe откомпиленный скинуть....
...
Рейтинг: 0 / 0
Как определить имя или хендл окна по имени процесса.
    #34116776
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UlanOf

И Главное окно родитель есть в любом оконном приложении...



В Win32, на сколько я помню, вообще нет понятия "главное окно приложения".
...
Рейтинг: 0 / 0
Как определить имя или хендл окна по имени процесса.
    #34121953
UlanOf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv UlanOf

И Главное окно родитель есть в любом оконном приложении...



В Win32, на сколько я помню, вообще нет понятия "главное окно приложения".
Родительское окошко... :)
GetWindow(H,GW_OWNER)==NULL вот этим и проверяем...
...
Рейтинг: 0 / 0
Как определить имя или хендл окна по имени процесса.
    #34122072
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Win32 SDK help
Owned Windows
An overlapped or pop-up window can be owned by another overlapped or pop-up window. Being owned places several constraints on a window.

An owned window is always above its owner in the z-order.
The system automatically destroys an owned window when its owner is destroyed.
An owned window is hidden when its owner is minimized.
Only an overlapped or pop-up window can be an owner window; a child window cannot be an owner window. An application creates an owned window by specifying the owner's window handle as the hwndParent parameter of CreateWindowEx when it creates a window with the WS_OVERLAPPED or WS_POPUP style. The hwndParent parameter must identify an overlapped or pop-up window. If hwndParent identifies a child window, the system assigns ownership to the top-level parent window of the child window. After creating an owned window, an application cannot transfer ownership of the window to another window.

Dialog boxes and message boxes are owned windows by default. An application specifies the owner window when calling a function that creates a dialog box or message box.

An application can use the GetWindow function with the GW_OWNER flag to retrieve a handle to a window's owner.



При чем здесь главное окно приложения - не понятно. У приложения может быть несколько OVERLAPPED-окон, и эти несколько окон могут быть самостоятельно OWNER-ами нескольких наборов других каких-то окон. Это не выделяет никак ни одно окно как главное.
...
Рейтинг: 0 / 0
Как определить имя или хендл окна по имени процесса.
    #34125128
UlanOf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я с удовольствием бы выслушал, что я не так понял.... Занимался этим месяца 3-4 и сделал вывод... Возможно затруднения с английским переводом...
Если не прав получу удовольствие если поправишь..
Стиль окна значение описание
WS_OVERLAPPED 0х00000000L Окно имеет заголовок и обрамляющую рамку
or WS_POPUP 0х80000000L Создается всплывающее (popup) окно
Это речь идет о CreateWindow
WINAPI WinMain описании класса в котором при создании указаваются стили создаваемого окна....
Owned Windows(владеемое,немного не по русски) это не Owner Windows (главное)...
...
Рейтинг: 0 / 0
Как определить имя или хендл окна по имени процесса.
    #34128951
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запускает IE. Нажимаем Ctrl+N. Смотрим в диспетчер задач и видим два "главных" окна и один процесс iexplore.exe
...
Рейтинг: 0 / 0
Как определить имя или хендл окна по имени процесса.
    #34155891
UlanOf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BarloneЗапускает IE. Нажимаем Ctrl+N. Смотрим в диспетчер задач и видим два "главных" окна и один процесс iexplore.exe
Ага я уже поглядел до этого... кароче не понял как это .... запутался нафик... Делал курсовую Диспетчер задач... Вот приведенный выше текс процедуры перебирает все процессы и смотри их окна... и выводит список, полностю соответствует тому что возвращает диспетчер винды на вкладке приложения... Работает исправно, отдельным потоком, с определенной скоростью обнавления... С окнами потом разберусь...
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как определить имя или хендл окна по имени процесса.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]