【问题标题】:How to get count of opened handles that belongs to a certain process?如何获取属于某个进程的已打开句柄的计数?
【发布时间】:2012-02-19 14:13:33
【问题描述】:

您可以使用程序Process Explorer 查看正在运行的应用程序有多少句柄。 Delphi代码有没有办法得到这个数字?我有兴趣跟踪应用程序本身的号码;不要像 Process Explorer 那样查找其他应用程序使用的句柄数。

我的目的是让应用程序跟踪/检测可能的资源泄漏。

【问题讨论】:

    标签: windows delphi winapi handle window-handles


    【解决方案1】:

    使用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;
    

    【讨论】:

    • 效果很好。我用它来检测发生网络连接错误时没有调用Socket.Close()引起的资源泄漏。
    猜你喜欢
    • 2013-11-30
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多