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

Получить заголовок главного окна программы, по её pID

22.04.2015, 17:14. Показов 3244. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток, помогите пожалуйста из получить заголовок главного окна программы, по её pID
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <tlhelp32.h>
...
int pID=0;
    HANDLE pSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL);
    bool bIsok = false;
    PROCESSENTRY32 ProcEntry;
    ProcEntry.dwSize = sizeof(ProcEntry);
    bIsok = Process32First(pSnap, &ProcEntry);
        while(bIsok)
        {
            Memo1->Lines->Add("> " + IntToStr(pID) + " | " + ProcEntry.szExeFile + " | " + ProcEntry.th32ProcessID + " | " + ProcEntry.cntThreads + " | " + ProcEntry.pcPriClassBase);
            bIsok = Process32Next(pSnap, &ProcEntry);
            pID++;
        }
    CloseHandle(pSnap);
Таким образом получаю в мемо номер процесса, его название, его ПИД, счетчик потоков, приоритет процесса
Но как получить хендел?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.04.2015, 17:14
Ответы с готовыми решениями:

Как узнать заголовок окна по PID процесса
Тут Я скрываю окно по Заголовку программы. У меня не большой вопрос как узнать Заголовок окна на PID процесса? Просто Заголовок...

Определить заголовок окна по PID или по процессу
Есть функция, определяющая PID процесса function GetProcessIDExt(ProcessName:string):DWORD; // ïîëó÷àåì PID...

Определить заголовок(имя) окна, зная PID его процесса
Сабж! Уже 2ой день не могу найти - как? У меня известе PID и hwnd процесса, как узнать имя окна(то есть название окна, которое отображается...

3
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
22.04.2015, 17:54
HANDLE processHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processId);

не забудьте удалить потом
CloseHandle(processHandle);

Добавлено через 5 минут
не досмотрел, окно же нужно

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
HWND h = ::GetTopWindow(0 );
while ( h )
{
  DWORD pid;
  DWORD dwTheardId = ::GetWindowThreadProcessId( h,&pid);
 
 
 
         if ( pid == ваш PID )
         {
//тут h и будет хендлом окна
              break;
         }
         h = ::GetNextWindow( h , GW_HWNDNEXT);
}
1
2 / 2 / 0
Регистрация: 11.01.2015
Сообщений: 16
23.04.2015, 01:46  [ТС]
Получаю очень много лишнего в мемо, может как то можно с этим бороться? исключать все лишнее Ифом не вариант...
Получаю дочерние окна, как я понимаю, так же хендел системных процессов каких-то...

Кликните здесь для просмотра всего текста


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void __fastcall TForm1::FormActivate(TObject *Sender)
{
    HWND h = ::GetTopWindow(0 );
    while ( h )
    {
      DWORD pid;
      AnsiString TITLE;
      DWORD dwTheardId = ::GetWindowThreadProcessId( h,&pid);
      TCHAR title[255];
      GetWindowText(h,title,255);
      TITLE = title;
      if (TITLE!="MSCTFIME UI" && TITLE!="GDI+ Window" && TITLE!="Default IME" && TITLE!="Msg" && TITLE!="MCI command handling window" && TITLE!="DWM Notification Window" && TITLE!="")
          {
          Memo1->Lines->Add(TITLE);
          }
      h = ::GetNextWindow( h , GW_HWNDNEXT);
    }
}
0
2 / 2 / 0
Регистрация: 11.01.2015
Сообщений: 16
23.04.2015, 18:20  [ТС]
Решил проблему, теперь в мемо аккуратный список запущенных программ)

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
#include <tlhelp32.h>
...
void __fastcall TForm1::FormActivate(TObject *Sender)
{
    HWND h = ::GetTopWindow(0 );
    while ( h )
    {
      DWORD pid;
      AnsiString TITLE;
      DWORD dwTheardId = ::GetWindowThreadProcessId( h,&pid);
      TCHAR title[255];
      GetWindowText(h,title,255);
      TITLE = title;
 
          if (IsWindowVisible(h))
          {
              if (TITLE!="Пуск" && TITLE!="")
                  {
                  Memo1->Lines->Add(TITLE);
                  }
          }
      h = ::GetNextWindow( h , GW_HWNDNEXT);
    }
}
//---------------------------------------------------------------------------
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.04.2015, 18:20
Помогаю со студенческими работами здесь

Изменить заголовок главного окна в Аксесс
Делал базу на основе копии старой, а заголовок главного окна остался, как его можно изменить?

Получить все классы программы по PID
Как получить все классы программы по PID ?

Получить заголовок окна
что есть: void __fastcall Ttextig::Button1Click(TObject *Sender) { GetCursorPos(&amp;p); hw=WindowFromPoint(p); HWND our; while...

Получить заголовок активного окна
Приветствую. Хочу получать лог смены активности окон. Пытаюсь использовать такой код в dll: var WinAct: HHook = 0; F:textfile; ...

Получить заголовок любого окна
Как можно при запуске допустим текстового файла вывести его ( title - название окна ) в текстбокс? Пример: Открываю текстовый файл и в...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
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, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
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, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru