2010-04-07 6 views

ответ

1

Там есть ответ на ваш вопрос http://www.codeproject.com/KB/threads/ParentPID.aspx

Короче говоря, вы создаете снимок всех процессов, запущенных с lpfCreateToolhelp32Snapshot(), а затем перебрать его, чтобы найти процесс (идентифицированный GetCurrentProcessId()) с lpfProcess32First()/lpfProcess32Next(). После того как вы нашли свой собственный процесс, структура, которую вы получаете, дает вам идентификатор процесса родительского процесса, тот, который запустил ваше приложение.

После получения родительского ПИД-кода легко получить имя файла exe и другие атрибуты с помощью EnumProcessModules() и GetModuleFileNameEx().

Но вы, вероятно, можете просто использовать код по ссылке.

1

Вы хотите найти это программное обеспечение? Тогда вы найдете их related questions полезно:

Если вы просто хотите увидеть процесс родительских вы можете использовать Process Explorer от Sysinternals.

1

Зачем вам это нужно знать? Windows не поддерживает строгий родительский процесс, как это делает unix - он записывает PID родителя при создании процесса, но когда этот процесс уходит, он не обновляется (потому что процесс не отслеживает его детей, поэтому вы не может его обновить). Это означает, что PID родительского процесса указывает на процесс, который больше не существует. Еще хуже, теоретически идентификатор процесса может быть повторно использован, что означает, что идентификатор родительского процесса может указывать на совершенно другой процесс.

Смежные вопросы