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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.09.2011, 21:12   #1
Den7656
Форумчанин
 
Аватар для Den7656
 
Регистрация: 08.06.2011
Сообщений: 103
По умолчанию Родительский процесс

Приветствую вас, интересует вопрос такой:
как можно получить имя (полное с путем) родительского процесса чужой программы, например explorer.exe или winrar, нужно узнать каким процессом он был запущен.
всем ответившим спасибо.
Жизнь хорошая штука -и⊥ʎdʞ ин ʞɐʞ
Den7656 вне форума Ответить с цитированием
Старый 09.09.2011, 11:05   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

самый просто способ через ToolHelp32. получаем список процессов, находим в этом списке искомый и получаем его PPID.

Код:
function GetProcessParentPID(const PID: DWORD): DWORD;
var
  Snapshot: Windows.THandle;    // snapshot of process
  PE: TlHelp32.TProcessEntry32; // structure holding info about a process
  EndOfList: Boolean;           // indicates end of process list reached
begin
  // Assume failure
  Result := '';
  // Get snapshot containing process list
  Snapshot := TlHelp32.CreateToolHelp32SnapShot(TlHelp32.TH32CS_SNAPPROCESS, 0);
  if Snapshot = Windows.THandle(-1) then
    Exit;
  try
    // Look up process in process list
    PE.dwSize := SizeOf(PE);
    EndOfList := not TlHelp32.Process32First(Snapshot, PE);
    while not EndOfList do
    begin
      if PE.th32ProcessID = PID then
      begin
        // Found process: record exe name
        Result := PE.th32ParentProcessID;
        Break;
      end;
      EndOfList := not TlHelp32.Process32Next(Snapshot, PE);
    end;
  finally
    // Free the snapshot
    Windows.CloseHandle(Snapshot);
  end;
end;
также можно через ZwQueryProcessInformation, но через ToolHelp32 предпочтительнее
rpy3uH вне форума Ответить с цитированием
Старый 09.09.2011, 17:11   #3
Den7656
Форумчанин
 
Аватар для Den7656
 
Регистрация: 08.06.2011
Сообщений: 103
По умолчанию

Большое спасибо, все получилось
Жизнь хорошая штука -и⊥ʎdʞ ин ʞɐʞ
Den7656 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как заставить родительский div растягиваться по высоте дочернего Arassir HTML и CSS 9 16.10.2013 15:20
Delphi. Как записать, что родительский класс-перемещающийся отрезок? Kurai Помощь студентам 0 28.04.2010 21:23
"Родительский" вопрос mixer94 Общие вопросы Delphi 5 11.07.2009 21:22
Процесс ryton Операционные системы общие вопросы 5 28.05.2008 18:14
Какой родительский класс у формы? werser Помощь студентам 3 12.06.2007 23:15