Ver Mensaje Individual
  #2  
Antiguo 14-05-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Reputación: 20
cHackAll Va por buen camino
Código Delphi [-]
program Project1;

uses Windows, tlhelp32;

var
 si: TStartupInfo = (cb: SizeOf(si));
 pi: TProcessInformation;
 hSnapshot, hProcess: Cardinal;
 pe: TProcessEntry32 = (dwSize: SizeOf(pe));

begin
 CreateProcess(nil, 'explorer.exe c:\windows', nil, nil, False, 0, nil, nil, si, pi);
 WaitForSingleObject(pi.hProcess, INFINITE);
 hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
 if Process32First(hSnapshot, pe) then
  repeat
   if pe.th32ParentProcessID = pi.dwProcessId then
    begin
     hProcess := OpenProcess(SYNCHRONIZE, False, pe.th32ProcessID);
     if LongBool(hProcess) then
      begin
       WaitForSingleObject(hProcess, INFINITE);
       CloseHandle(hProcess);
      end;
    end;
  until not Process32Next(hSnapshot, pe);
 CloseHandle(hSnapshot);
end.

Nota; Tal vez para abrir algunos procesos "hijos" requieras habilitar el privilegio SeDebugPrivilege de tu proceso. También es aconsejable revises el ejemplo para poder revisar a los procesos hijos de los procesos hijos (procesos nietos y bisnietos del primero).

Saludos

Última edición por cHackAll fecha: 14-05-2008 a las 16:29:51. Razón: F7 & CloseHandle(hSnapshot);
Responder Con Cita