當前模塊的句柄在程序進入點可以獲得,一般做法是保存為一個全局變量,以后使用這個全局變量即可。但有時在寫一些比較通用的代碼時剛好要用到模塊句柄,如果還去訪問這個全局變量就破壞了代碼的通用性。下面函數可以取得當前模塊的句柄,無須保存,隨調隨得:view plaincopy to clipboardprint? 01./* 02. 通過一個地址取模塊句柄 03.*/ 04.inline HMODULE ModuleHandleByAddr(const void* ptrAddr) 05.{ 06. MEMORY_BASIC_INFORMATION info; 07. ::VirtualQuery(ptrAddr, &info, sizeof(info)); 08. return (HMODULE)info.AllocationBase; 09.} 10./* 11. 當前模塊句柄 12.*/ 13.inline HMODULE ThisModuleHandle() 14.{ 15. static HMODULE sInstance = ModuleHandleByAddr((void*)&ThisModuleHandle); 16. return sInstance; 17.} |