Главная страница
    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.045 c
3-1126454256
VladBD
2005-09-11 19:57
2005.10.23
Нумерация записей с учетом сортировки


4-1124209558
Twister1222
2005-08-16 20:25
2005.10.23
Запрет на запуск


3-1126086871
Term
2005-09-07 13:54
2005.10.23
как в ХП для FB1.5 получить аналогичный результат


14-1128069428
LordOfRock
2005-09-30 12:37
2005.10.23
Вот, оказывается, как это хорошо звучит!


14-1128056956
Ega23
2005-09-30 09:09
2005.10.23
С днем рождения! 30 сентября





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