Форум: "WinAPI";
Текущий архив: 2010.02.07;
Скачать: [xml.tar.bz2];
Внизопределение родильского PID Найти похожие ветки
← →
Fildy (2008-12-07 15:03) [0]нужно определить id процесса-родителя, который запустил мое приложение. делается это,чтобы ограничить количество приложений,которые могут запускать мою программу
← →
KilkennyCat © (2008-12-07 15:50) [1]а я всегда считал, что виндоуз запускает...
← →
Fildy (2008-12-07 16:49) [2]
> а я всегда считал, что виндоуз запускает...
т.е. в структуре PROCESSENTRY32 такое поле как parentID это просто так?;)
подскажите,как правильно заполнить эту структуру, чтобы в этом поле отображался родительский pid.
← →
Rouse_ © (2008-12-07 17:43) [3]
type
PROCESS_BASIC_INFORMATION = packed record
ExitStatus: DWORD;
PebBaseAddress: Pointer;
AffinityMask: DWORD;
BasePriority: DWORD;
uUniqueProcessId: Ulong;
uInheritedFromUniqueProcessId: Ulong;
end;
function NtQueryInformationProcess(
ProcessHandle : THandle;
ProcessInformationClass : Byte;
ProcessInformation : Pointer;
ProcessInformationLength : ULONG;
ReturnLength : PULONG
): DWORD; stdcall; external "ntdll.dll";
function GetOwnedProcessID(const dwProcessHandle: DWORD): DWORD;
const
ProcessBasicInformation = 0;
var
Info: PROCESS_BASIC_INFORMATION;
begin
Result := 0;
if NtQueryInformationProcess(dwProcessHandle,
ProcessBasicInformation, @Info, SizeOf(Info), nil) = NO_ERROR then
Result := Info.uInheritedFromUniqueProcessId;
end;
Пример выполнения:procedure TForm1.Button1Click(Sender: TObject);
var
dwProcessHandle: DWORD;
begin
DuplicateHandle(GetCurrentProcess, GetCurrentProcess, GetCurrentProcess,
@dwProcessHandle, 0, False, DUPLICATE_SAME_ACCESS);
Caption := IntToStr(GetOwnedProcessID(dwProcessHandle));
end;
← →
Riply © (2008-12-07 18:37) [4]> [3] Rouse_ © (07.12.08 17:43)
> Пример выполнения:
А можно разжевать "Пример выполнения" ?
А то у меня складывается впечатление,
что кто-то из нас (либо я, либо ты) перетрудился и нуждается в отдыхе :)
← →
Сергей М. © (2008-12-07 18:41) [5]
> parentID это просто так?
А зачем оно тебе нужно ?
Процесс, который породил твой процесс, на момент получения тобой его PID вполне мог уже благополучно завершиться.
← →
Rouse_ © (2008-12-07 19:41) [6]
> А можно разжевать "Пример выполнения" ?
> А то у меня складывается впечатление,
> что кто-то из нас (либо я, либо ты) перетрудился и нуждается
> в отдыхе :)
На псевдохендл иногда не срабатывает, поэтому вместо него получаю реальный описатель...
← →
Riply © (2008-12-07 19:55) [7]> [6] Rouse_ © (07.12.08 19:41)
> На псевдохендл иногда не срабатывает, поэтому вместо него получаю реальный описатель...
А что говорит, когда не срабатывает ?
← →
Rouse_ © (2008-12-07 20:47) [8]Саш, ну мы же это уже на исходниках уже обсуждали год назад :)
NtQueryInformationProcess периодически выдает "неверный дескриптор" на псевдохендл :)
← →
Riply © (2008-12-07 21:01) [9]> [8] Rouse_ © (07.12.08 20:47)
> Саш, ну мы же это уже на исходниках уже обсуждали год назад :)
Значит я не ошиблась в предположении, что кто-то перетрудился.
Побежала отдыхать :)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2010.02.07;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.004 c