HANDLE pProcessHandle = NULL; pProcessHandle = theApp.g_pi.hProcess; // GetCurrentProcess(); HMODULE hInstLib = LoadLibrary( _T( " PSAPI.DLL " )) ; if (pProcessHandle != NULL && hInstLib != NULL) ... { HMODULE pLoadedModules[4096]; DWORD nLoadedBytes = 0; // Get array of loaded modules BOOL (WINAPI *lpfEnumProcessModules)( HANDLE, HMODULE *, DWORD, LPDWORD ); DWORD (WINAPI *lpfGetModuleFileNameEx)( HANDLE, HMODULE, LPTSTR, DWORD ); lpfEnumProcessModules = (BOOL(WINAPI *)(HANDLE, HMODULE *, DWORD, LPDWORD)) GetProcAddress( hInstLib, "EnumProcessModules" ) ; #ifdef _UNICODE lpfGetModuleFileNameEx =(DWORD (WINAPI *)(HANDLE, HMODULE, LPTSTR, DWORD )) GetProcAddress( hInstLib, "GetModuleFileNameExW" ) ; #else lpfGetModuleFileNameEx =(DWORD (WINAPI *)(HANDLE, HMODULE, LPTSTR, DWORD )) GetProcAddress( hInstLib, "GetModuleFileNameExA" ) ; #endif if (lpfEnumProcessModules(pProcessHandle, pLoadedModules, (DWORD)sizeof(pLoadedModules), &nLoadedBytes)) ...{ // Compute effective number of modules int nNumberOfModules = nLoadedBytes/sizeof(HMODULE); // Loop on all modules for (int i=0; i<nNumberOfModules; i++) ...{ // Fetch module file name TCHAR pFileName[_MAX_PATH]; pFileName[0]=0; CString cleanFileName; if (lpfGetModuleFileNameEx(pProcessHandle, pLoadedModules[i], pFileName, _MAX_PATH) > 0) ...{ if(_tcslen(pFileName)>0&&_tcslen(pFileName)<sizeof(pFileName)/sizeof(pFileName[0])) ...{ /**/////m_clModules.AddString(pFileName); //CDLLVersion dll_ver(pFileName); //LVITEM lvI; //lvI.mask = LVIF_TEXT ; //lvI.state = 0; //lvI.stateMask = 0; //lvI.iItem = i; //lvI.iSubItem = 0; //lvI.pszText = pFileName; //ListView_InsertItem(hwndListView, &lvI); //m_dqFileList.push_back(pFileName); //LV_ITEM lv_sub; //memset(&lv_sub,0,sizeof(LV_ITEM)); //lv_sub.mask = LVIF_TEXT ; //lv_sub.state = 0; //lv_sub.stateMask = 0; //lv_sub.iItem = i; //lv_sub.iSubItem = 1; //lv_sub.pszText = (LPTSTR)(LPCTSTR)dll_ver.GetFullVersion(); //ListView_SetItem(hwndListView, &lv_sub); //m_dqVersionList.push_back((LPCTSTR)dll_ver.GetFullVersion()); } } } } // Close process handle CloseHandle(pProcessHandle); } FreeLibrary(hInstLib);