Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2019, 13:28   #1
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию Найти родительский процесс

Всем привет!
Подскажите, как на программном уровне найти родительский процесс, который создаёт ещё кучу процессов. Например тот-же Хром создаёт свои процессы для каждой из вкладок (см.в Диспетчере задач), и как мне теперь найти среди этих процессов родительский?

Я сканирую все активные процессы в системе функцией CreateToolhelp32Snapshot() и получаю их имена с PID'ами. Только PID назначается рандомно и по нему нельзя вычислить родителя. Может есть специальная функция для этого, или можно каким-то другим способом это определить? Был-бы признателен за наводку.

****************
вот блин.. чёт я ступил..
в этой-же структуре есть поле PID родительского процесса,
по которому и можно вычислить.
Нашедшего выход - затаптывают первым..

Последний раз редактировалось R71MT; 03.07.2019 в 13:36.
R71MT вне форума Ответить с цитированием
Старый 03.07.2019, 13:42   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Таки да, либо через поле в этой же структуре, либо PROCESS_BASIC_INFORMATION.Inherited FromUniqueProcessId
p51x вне форума Ответить с цитированием
Старый 03.07.2019, 14:37   #3
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
либо PROCESS_BASIC_INFORMATION.Inherited FromUniqueProcessId
спасибо, попробую..
а через поле в структуре Process32Next() получается слишком муторно, и придётся делать дополнительные проверки. Например вот что получил для процессов Chrome

pid.png

Теперь по какому алгоритму дальше вычислять?
Тут видно, что родителем первого является Explorer.exe, который запустил Хром - значит нужно сначала найти его PID и потом сравнивать что-ли? Слишком запутано получается..
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 03.07.2019, 14:41   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Можно сразу дерево строить...
p51x вне форума Ответить с цитированием
Старый 03.07.2019, 14:48   #5
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

..по какому принципу?
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 03.07.2019, 14:52   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Берете процесс, если это хром, то ищете родительский пид в дереве и подвешиваете ему потомка.
p51x вне форума Ответить с цитированием
Старый 03.07.2019, 14:55   #7
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

ясно.. просто я думал, может есть готовая функция для этого,
оказывается всё ручками нужно делать, что совсем не вдохнавляет
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти дочерний процесс avlid Общие вопросы Delphi 0 11.10.2017 13:37
Найти процесс и завершить его Lag Win Api 1 16.02.2015 00:21
Родительский процесс Den7656 Win Api 2 09.09.2011 17:11
[delphi] Найти процесс sashaxD Общие вопросы Delphi 3 06.09.2011 10:04
[Вопрос]Как найти процесс приложения зная его заголовок? saylar_06 Общие вопросы Delphi 9 10.07.2011 21:17