javier20
08-02-2008, 07:58:20
hola q tal navegando por la web encontre este codigo y me pregunto como funciona, hace tiempo que vengo con el delphi y la verdad me gustaria empezar a cazar algo:
bueno el codigo es este:
function GetProc():String;
var
Proceso : TProcessEntry32;
ProcessHandle : THandle;
HayOtroProceso : Boolean;
begin
Proceso.dwSize := SizeOf(TProcessEntry32);
ProcessHandle := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if Process32First(ProcessHandle, Proceso) then //Si encuentra el primer proceso
begin
Result:= String(Proceso.szExeFile) + '|'+ IntToStr(Proceso.th32ProcessID)+'|';
repeat HayOtroProceso := Process32Next(ProcessHandle, Proceso);
if HayOtroProceso then
Result:=Result + String(Proceso.szExeFile) + '|'+ IntToStr(Proceso.th32ProcessID)+'|';
until not HayOtroProceso; //Y esto se repite hasta que Process32Next retorne False
end;
CloseHandle(ProcessHandle);
end;
estas son mis dudas:
1 ProcessHandle esta definida como THandle y en otros casos he visto que la definen como LongWord, cual es la diferencia?.
2 Proceso.dwSize := SizeOf(TProcessEntry32); para que sirve esto?
3 que pasa si borro la linea CloseHandle al final del codigo.
bueno por el momento son estas nomas espero sus respuestas.
saludos.
bueno el codigo es este:
function GetProc():String;
var
Proceso : TProcessEntry32;
ProcessHandle : THandle;
HayOtroProceso : Boolean;
begin
Proceso.dwSize := SizeOf(TProcessEntry32);
ProcessHandle := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if Process32First(ProcessHandle, Proceso) then //Si encuentra el primer proceso
begin
Result:= String(Proceso.szExeFile) + '|'+ IntToStr(Proceso.th32ProcessID)+'|';
repeat HayOtroProceso := Process32Next(ProcessHandle, Proceso);
if HayOtroProceso then
Result:=Result + String(Proceso.szExeFile) + '|'+ IntToStr(Proceso.th32ProcessID)+'|';
until not HayOtroProceso; //Y esto se repite hasta que Process32Next retorne False
end;
CloseHandle(ProcessHandle);
end;
estas son mis dudas:
1 ProcessHandle esta definida como THandle y en otros casos he visto que la definen como LongWord, cual es la diferencia?.
2 Proceso.dwSize := SizeOf(TProcessEntry32); para que sirve esto?
3 que pasa si borro la linea CloseHandle al final del codigo.
bueno por el momento son estas nomas espero sus respuestas.
saludos.