определение родительского процесса
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
определение родительского процесса - 2008-12-07 12:58:13.596666
|
|
|
NGP
Сообщений: 91
Оценки: 0
Присоединился: 2006-07-17 22:20:45
|
нужно в delphi определить родительский процесс своей проги. это делается для контроля приложений,которые могут запускать программу
|
|
|
RE: определение родительского процесса - 2008-12-07 13:18:15.680000
|
|
|
alexbozhko
Сообщений: 1024
Оценки: 0
Присоединился: 2005-11-24 13:35:34
|
quote:
ORIGINAL: NGP нужно в delphi определить родительский процесс своей проги. это делается для контроля приложений,которые могут запускать программу А запускаешь тоже из своих приложений?
|
|
|
RE: определение родительского процесса - 2008-12-07 13:28:44.356666
|
|
|
VENOM4X
Сообщений: 246
Оценки: 0
Присоединился: 2008-02-18 22:49:08.960000
|
...
type
TNtProcessBasicInfo = record
exitStatus : dword;
pebBaseAddress : dword;
affinityMask : dword;
basePriority : dword;
pid : dword;
parentPid : dword;
end;
TNtProcessInfoClass = (ProcessBasicInformation,
ProcessQuotaLimits,
ProcessIoCounters,
ProcessVmCounters,
ProcessTimes,
ProcessBasePriority,
ProcessRaisePriority,
ProcessDebugPort,
ProcessExceptionPort,
ProcessAccessToken,
ProcessLdtInformation,
ProcessLdtSize,
ProcessDefaultHardErrorMode,
ProcessIoPortHandlers,
ProcessPooledUsageAndLimits,
ProcessWorkingSetWatch,
ProcessUserModeIOPL,
ProcessEnableAlignmentFaultFixup,
ProcessPriorityClass,
MaxProcessInfoClass);
type
TPDword = ^dword;
...
var
...
NtQueryInformationProcess : function (processHandle : dword;
infoClass : TNtProcessInfoClass;
buffer : pointer;
bufSize : dword;
returnSize : TPDword) : dword; stdcall = nil;
...
//Returns parent PID of a given child process (hanlde)
function GetParentProcessID(ph: dword) : dword;
// ph needs to have PROCESS_QUERY_INFORMATION access
var pbi : TNtProcessBasicInfo;
begin
if @NtQueryInformationProcess = nil then
NtQueryInformationProcess := GetProcAddress(GetModuleHandle('ntdll.dll'), 'NtQueryInformationProcess');
if NtQueryInformationProcess(ph{Handle}, ProcessBasicInformation, @pbi, sizeOf(TNtProcessBasicInfo), nil) = 0 then
result := pbi.ParentPid
else result := 0;
end;
//Returns HANDLE of parent process for current process
function GetParentHandle() : HWND;
var MyHnd, Parent : HWND;
begin
MyHnd := OpenProcess(PROCESS_ALL_ACCESS, false, GetCurrentProcessId());
Parent := OpenProcess(PROCESS_ALL_ACCESS, false, GetParentProcessID(MyHnd));
CloseHandle(MyHnd);
result := Parent;
//get handle to parent process
end;
|
|
|
RE: определение родительского процесса - 2008-12-07 15:16:23.070000
|
|
|
NGP
Сообщений: 91
Оценки: 0
Присоединился: 2006-07-17 22:20:45
|
quote:
ORIGINAL: alexbozhko А запускаешь тоже из своих приложений? не совсем, но что это за приложения и их PID я знаю.
|
|
|
RE: определение родительского процесса - 2008-12-07 18:35:34.890000
|
|
|
NGP
Сообщений: 91
Оценки: 0
Присоединился: 2006-07-17 22:20:45
|
всем спасибо,вопрос решил
|
|
|
|
|