Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.10.23;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.10.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.053 c
14-1128062530
Карелин Артем
2005-09-30 10:42
2005.10.23
Использование 2-х модемов при выходе в инет.


3-1126016397
Drakosha
2005-09-06 18:19
2005.10.23
Найти дырки в таблице


14-1127950533
Ученик чародея
2005-09-29 03:35
2005.10.23
А у нас в Киеве появился компьютерный магазин "Хакер".


3-1126686715
ZZZ
2005-09-14 12:31
2005.10.23
Как связать поле таблицы с компонентом DateTimePicker


14-1128080193
Андрей Жук
2005-09-30 15:36
2005.10.23
Yngwie Maimsteen





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский