2012-01-26 18 views
7

Puede usar el programa Process Explorer para ver cuántos identificadores tienen las aplicaciones en ejecución. ¿Hay alguna forma con el código Delphi para obtener este número? Estoy interesado en rastrear el número de la aplicación en sí; no para encontrar el número de identificadores usados ​​por otras aplicaciones como lo está haciendo Process Explorer.¿Cómo obtener el recuento de identificadores abiertos que pertenecen a un proceso determinado?

Mi intención es que la aplicación rastree/detecte posibles fugas de recursos.

Respuesta

12

Utilice la función GetProcessHandleCount. Esta función de la API se encuentra en las versiones recientes de Delphi importados por el Winapi.Windows unidad (por lo que se puede omitir el presentado uno):

function GetProcessHandleCount(hProcess: THandle; var pdwHandleCount: DWORD): BOOL; stdcall; 
    external 'kernel32.dll'; 

procedure TForm1.Button1Click(Sender: TObject); 
var 
    HandleCount: DWORD; 
begin 
    if GetProcessHandleCount(GetCurrentProcess, HandleCount) then 
    ShowMessage('Handle count: ' + IntToStr(HandleCount)); 
end; 
+1

funciona bien. Lo usé para detectar fugas de recursos causadas por no llamar 'Socket.Close()' cuando ocurre un error de conexión de red. – AlainD

Cuestiones relacionadas