2012-01-26 12 views
7

आप यह देखने के लिए प्रोग्राम Process Explorer का उपयोग कर सकते हैं कि कितने हैंडल चल रहे एप्लिकेशन हैं। क्या इस नंबर को पाने के लिए डेल्फी कोड के साथ कोई तरीका है? मुझे आवेदन के लिए संख्या को ट्रैक करने में दिलचस्पी है; प्रोसेस एक्सप्लोरर के रूप में अन्य अनुप्रयोगों द्वारा उपयोग किए जाने वाले हैंडल की संख्या नहीं ढूंढना।एक निश्चित प्रक्रिया से संबंधित खुले हैंडल की गिनती कैसे प्राप्त करें?

मेरा इरादा संभव संसाधन लीक को ट्रैक/पहचानने के लिए है।

उत्तर

12

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; 
+1

अच्छी तरह से काम करता है। मैंने नेटवर्क कनेक्शन त्रुटि होने पर 'सॉकेट.क्लोस()' को कॉल न करने के कारण संसाधन लीक का पता लगाने के लिए इसका इस्तेमाल किया। – AlainD

संबंधित मुद्दे