Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
4-1228475749
[RU].banOK
2008-12-05 14:15
2010.02.07
Пр0блемка с T00lHelp32


2-1260516490
Aleks
2009-12-11 10:28
2010.02.07
Странности календаря в Дельфи


2-1260503262
depot
2009-12-11 06:47
2010.02.07
использование TAction


2-1260456472
Taras
2009-12-10 17:47
2010.02.07
Печать с помощью QuickReport


15-1259997701
begin_flasher
2009-12-05 10:21
2010.02.07
Shockwave Flash





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский