2009-05-10 17 views
5

मेरे पास एक सी ++ विंडोज एप्लिकेशन myapp.exe है जो कई प्लग-इन लोड करता है।डीएलएल का फ़ाइल नाम कैसे प्राप्त करें?

प्लग-इन को उनके डीएलएल के पथ को खोजने की आवश्यकता है। मैं इसके लिए GetModuleFileName का उपयोग कर सकता हूं, लेकिन प्लग-इन DLL के लिए इसे हैंडल की आवश्यकता है। मुझे नहीं पता कि यह संभाल कहाँ प्राप्त करें। GetModuleHandle (NULL) निष्पादन योग्य को हैंडल देता है।

एक विकल्प GetModuleHandle (GetModuleHandle ("myplugin.dll") का उपयोग करना है, लेकिन इसके लिए प्लगइन का नाम हार्डकोड किया जाना चाहिए जिसे मैं टालना चाहता हूं।

किसी भी मदद की सराहना की जाती है।

पॉल

उत्तर

10

मैं जहां इस संभाल पाने के लिए

यह अपने DllMain() प्रवेश समारोह के लिए एक पैरामीटर के रूप में पारित कर रहा है पता नहीं है।

यदि प्लगइन अपने DLLMain() एंट्री फ़ंक्शन तक नहीं पहुंच सकता है, तो यह वर्चुअलQuery फ़ंक्शन का उपयोग अपनी स्मृति के एक टुकड़े पर कर सकता है और भरे हुए MEMORY_BASIC_INFORMATION संरचना के आवंटनबेस फ़ील्ड का उपयोग अपने HMODULE के रूप में कर सकता है।

+3

बिल्कुल सही धन्यवाद क्रिस। यहां मैं जिस फ़ंक्शन का उपयोग करता हूं: HINSTANCE GetMyModuleHandle() { MEMORY_BASIC_INFORMATION mbi; वर्चुअलQuery (GetMyModuleHandle, और एमबीआई, आकार (एमबीआई)); वापसी (HINSTANCE) (एमबीआई। आवंटनबेस); } –

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