lam, могут быть неоднозначности когда 2 процесса запускаются почти одновременно..
ProcessExplorer откуда то показывает точные сведения.
Добавлено через 26 минут
О что то нашел, используя Process32First, Process32Next ищем наш процесс. Когда найдем, в возращенной функцией структуре будет все нужное. Сейчас проверю.
typedef struct tagPROCESSENTRY32 {
DWORD dwSize;
DWORD cntUsage;
DWORD th32ProcessID;
ULONG_PTR th32DefaultHeapID;
DWORD th32ModuleID;
DWORD cntThreads;
DWORD th32ParentProcessID;
LONG pcPriClassBase;
DWORD dwFlags;
TCHAR szExeFile[MAX_PATH];
} PROCESSENTRY32, *PPROCESSENTRY32;
Добавлено через 18 часов 5 минут
Все получилось. Вот рабочая функция, может кому пригодится.
delphi Код:
function GetParentProcessID(procID: cardinal): cardinal;
var
hSnap: cardinal;
procEntry: tagPROCESSENTRY32;
begin
Result:= 0;
hSnap:= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
procEntry.dwSize:= SizeOf(procEntry);
if Process32First(hSnap, procEntry) then
begin
repeat
if procEntry.th32ProcessID = curProcID then
begin
Result:= procEntry.th32ParentProcessID;
break;
end;
until not Process32Next(hSnap, procEntry);
end
else
begin
ShowMessage(SysErrorMessage(GetLastError));
end;
CloseHandle(hSnap);
end;