2012-01-26 2 views
7

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

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

ответ

12

Используйте функцию 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; 
+1

работает хорошо. Я использовал это для обнаружения утечек ресурсов, вызванных не вызовом 'Socket.Close()' при возникновении ошибки сетевого подключения. – AlainD

 Смежные вопросы

  • Нет связанных вопросов^_^