Как узнать количество открытых дескрипторов, принадлежащих определенному процессу? - PullRequest
7 голосов
/ 26 января 2012

Вы можете использовать программу Process Explorer , чтобы узнать, сколько дескрипторов запущенных приложений.Есть ли способ с кодом Delphi, чтобы получить этот номер?Я заинтересован в отслеживании номера для самого приложения;не найти количество дескрипторов, используемых другими приложениями, как это делает Process Explorer.

Мое намерение состоит в том, чтобы приложение отслеживало / обнаруживало возможные утечки ресурсов.

1 Ответ

12 голосов
/ 26 января 2012

Используйте функцию GetProcessHandleCount.Эта функция API в последних версиях Delphi импортирована модулем Winapi.Windows (поэтому вы можете опустить представленную):

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;
...