7
您可以使用程序Process Explorer來查看運行應用程序的手柄數量。用Delphi代碼獲取這個數字有沒有辦法?我有興趣跟蹤應用程序本身的編號;沒有找到Process Explorer正在執行的其他應用程序使用的句柄數。如何獲取屬於某個過程的打開的句柄的數量?
我的意圖是讓應用程序跟蹤/檢測可能的資源泄漏。
您可以使用程序Process Explorer來查看運行應用程序的手柄數量。用Delphi代碼獲取這個數字有沒有辦法?我有興趣跟蹤應用程序本身的編號;沒有找到Process Explorer正在執行的其他應用程序使用的句柄數。如何獲取屬於某個過程的打開的句柄的數量?
我的意圖是讓應用程序跟蹤/檢測可能的資源泄漏。
使用GetProcessHandleCount
函數。這個API函數是由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()'而導致的資源泄漏。 – AlainD