Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.23;
Скачать: CL | DM;

Вниз

PID процесса   Найти похожие ветки 

 
Alex870   (2005-08-19 14:39) [0]

Здравствуйте!
Подскажите пожалуйста, как получить PID процесса, зная имя модуля, его породившего. Нашел функцию GetProcessId, ей передается Handle процесса, но как его получить я тоже не знаю. Зарание всем спасибо!


 
Erik1 ©   (2005-08-19 15:19) [1]

Вобщето можно в Help глянуть там куча функций, если конечно тебе надо получить ID текущего процеса то:
GetCurrentProcessId


 
Digitman ©   (2005-08-19 15:35) [2]

см. EnumProcesses() в составе psapi.pas

для каждого активного в системе процесса в ходе перечисления енумератор вернет инф.структуру, содержащую кр.всего прочего имя ехе-модуля и PID процесса


 
BiN ©   (2005-08-19 15:43) [3]

Digitman ©   (19.08.05 15:35) [2]

см. EnumProcesses() в составе psapi.pas

для каждого активного в системе процесса в ходе перечисления енумератор вернет инф.структуру, содержащую кр.всего прочего имя ехе-модуля и PID процесса


Очевидно, имелось ввиду Process32First/Next (?)


 
Leonid Troyanovsky ©   (2005-08-19 16:13) [4]


> BiN ©   (19.08.05 15:43) [3]

> Очевидно, имелось ввиду Process32First/Next (?)


Конечно, тут следует иметь ввиду CreateToolhelp32Snapshot &etc.
По-крайней мере, оно более документировано и шире применимо.
Ну, а psapi вовсе не нужно, и успешно заменялось NtQuerySystemInformation.

--
Regards, LVT.


 
Digitman ©   (2005-08-19 16:27) [5]


> BiN ©   (19.08.05 15:43) [3]


Toolhelp32API не рекомендуется использовать на НТ-платформе, хоть и поддерживается ей.

psapi (ProcessStatus API) был разработан специально для этих (и других связанных с этими) целей, его использование на НТ оправдано и корректно, равно как и просто.

NtQuerySystemInformation в составе NativeAPI заметно сложней в использовании, потому что эта ф-ция предоставляет самую разнородную инф-цию в гораздо большем объеме, нежели требуется для дан.задачи .. эта ф-ция, по сути, некий "пользовательский шлюз", через который можно получить самую разнородную сист.инф-цию, в т.ч. инф-цию о процессах в системе


 
Leonid Troyanovsky ©   (2005-08-19 16:32) [6]


> Digitman ©   (19.08.05 16:27) [5]


> Toolhelp32API не рекомендуется использовать на НТ-платформе,
> хоть и поддерживается ей.

Кто не рекомендует Toolhelp32API, тот, уж подавно, не
будет рекомендовать psapi, а Nt* only.

> psapi (ProcessStatus API) был разработан специально для
> этих (и других связанных с этими) целей, его использование
> на НТ оправдано и корректно, равно как и просто.

Создан был NT3.51-4 only, и, IMHO, группой(?) двоечников.

--
Regards, LVT.


 
BiN ©   (2005-08-19 16:33) [7]

Digitman ©   (19.08.05 16:27) [5]

Toolhelp32API не рекомендуется использовать на НТ-платформе, хоть и поддерживается ей.


Имелось ввиду, что EnumProcesses() не возвращает "инф.структуру, содержащую кр.всего прочего имя ехе-модуля и PID процесса".


 
psa247 ©   (2005-08-20 11:56) [8]


  if name = "" then exit;
  name:= UpperCase(name);
  if not(EnumProcesses(@ProcList, sizeof(ProcList), Proc_count))then exit;
  for i:= 0 to Proc_count div 4 - 1 do begin
    ProcHandle:= OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, ProcList[i]);
    if ProcHandle > 0 then begin
      EnumProcessModules(ProcHandle, @ModHandle, 4, Mod_Count);
      GetModuleFileNameEx(ProcHandle, ModHandle, ModName, sizeof(ModName));
      if name = UpperCase(string(ExtractFileName(ModName)))then begin
        // Нашли имя процесса
        ProcList[i] - his PID ..... <--- look here.....
      CloseHandle(ProcHandle);
      end;
    end;


 
psa247 ©   (2005-08-20 12:08) [9]

Кое-что подправишь...


 
alpet ©   (2005-08-20 12:21) [10]

А как понимать - "модуля его породившего". Это модуль Delphi или некоторая DLL, его "породили"? Запуск на выполнения связан с какими-нибудь событиями? Если так можно, сразу после запуска, построить список процессов, выделить в нем самый молодой (GetProcessTimes), или сравнить с предыдущим списком процессов. Как тебе может имя модуля, если это не имя исполняемого файла самого процесса, помочь, я не представляю.


 
Digitman ©   (2005-08-21 13:42) [11]


> Создан был NT3.51-4 only


EnumProcesses
..
Requirements
Client Requires Windows XP, Windows 2000 Professional, or Windows NT Workstation 4.0.
Server Requires Windows Server 2003, Windows 2000 Server, or Windows NT Server 4.0.


> IMHO, группой(?) двоечников


?


 
Leonid Troyanovsky ©   (2005-08-21 17:24) [12]


> > Создан был NT3.51-4 only

> Requirements
> Client Requires Windows XP, Windows 2000 Professional, or
> Windows NT Workstation 4.0.
> Server Requires Windows Server 2003, Windows 2000 Server,
> or Windows NT Server 4.0.


http://groups-beta.google.com/group/microsoft.public.win32.programmer.kernel/browse_frm/thread/bfe3257147fb910f/815c8da9 2040fd70?lnk=st&q=microsoft+kernel+ntquerysysteminformation+psapi&rnum=1#815c8da92040fd70

Кста, для NT<5 оно было redist.


> > IMHO, группой(?) двоечников

> ?


Свен Шрайбер "Недокументированные возможности Windows 2000"

--
Regards, LVT.



Страницы: 1 вся ветка

Текущий архив: 2005.10.23;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.094 c
6-1120318987
GEEK
2005-07-02 19:43
2005.10.23
WebServer application: работа с базами данных


14-1127820439
VictorT
2005-09-27 15:27
2005.10.23
Подкиньте плиз ссылок на описание Pagemaker tagged text


2-1128067300
555
2005-09-30 12:01
2005.10.23
Почему то возникает ошибка - Stek Overlow


4-1124343984
Shopot
2005-08-18 09:46
2005.10.23
Давайте вместе разберемся с TAPI.


1-1128332065
Profi
2005-10-03 13:34
2005.10.23
Пропадают данные из TreeNode.Data при обращении к ним.