Первая ссылка:
| Код | function GetProcessCmdLine(PID:DWORD):string; var hProcess:THandle; pProcBasicInfo:PROCESS_BASIC_INFORMATION; ReturnLength:DWORD; prb:PEB; ProcessParameters:PROCESS_PARAMETERS; cb:cardinal; ws:WideString; begin result:=''; if pid=0 then exit; hProcess:=OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, FALSE, PID); if (hProcess <> 0) then try if (NtQueryInformationProcess(hProcess,ProcessBasicInformation, @pProcBasicInfo, sizeof(PROCESS_BASIC_INFORMATION),@ReturnLength) = STATUS_SUCCESS) then begin if ReadProcessMemory(hProcess,pProcBasicInfo.PebBaseAddress,@prb,sizeof(PEB),cb) then if ReadProcessMemory(hProcess,prb.ProcessParameters,@ProcessParameters,sizeof(PROCESS_PARAMETERS),cb) then begin SetLength(ws,(ProcessParameters.CommandLine.Length div 2)); if ReadProcessMemory(hProcess,ProcessParameters.CommandLine.Buffer, PWideChar(ws),ProcessParameters.CommandLine.Length,cb) then result:=string(ws) end end finally closehandle(hProcess) end end;
|
| Цитата | PS для получения ком. строки некоторых системных процессов, вызывающий процесс должен иметь привилегии отладчика. Узнать, как получить такие привилегии, можно, например, тут (см. ф-ю SetProcessDebugPrivelege).
Описания используемых структур и сигнатуры Native API ф-ций можно найти в JEDI Code Library
Автор: Krid
|
Еще сслыка: http://www.delphikingdom.com/asp/viewitem.asp?catalogid=698
И еще (можно записать в файл и считать оттуда): http://windowsxp.mvps.org/listproc.htm |