8 #include "../Common/StringConvert.h"
27 // MessageBox(0, TEXT(""), TEXT("Free"), 0);
29 if (!::FreeLibrary(_module))
35 bool CLibrary::LoadOperations(HMODULE newModule)
37 if (newModule == NULL)
45 bool CLibrary::LoadEx(LPCTSTR fileName, DWORD flags)
47 // MessageBox(0, fileName, TEXT("LoadEx"), 0);
48 return LoadOperations(::LoadLibraryEx(fileName, NULL, flags));
51 bool CLibrary::Load(LPCTSTR fileName)
53 // MessageBox(0, fileName, TEXT("Load"), 0);
55 // OutputDebugString(fileName);
56 // OutputDebugString(TEXT("\n"));
57 return LoadOperations(::LoadLibrary(fileName));
61 static inline UINT GetCurrentCodePage() { return ::AreFileApisANSI() ? CP_ACP : CP_OEMCP; }
62 CSysString GetSysPath(LPCWSTR sysPath)
63 { return UnicodeStringToMultiByte(sysPath, GetCurrentCodePage()); }
65 bool CLibrary::LoadEx(LPCWSTR fileName, DWORD flags)
68 return LoadOperations(::LoadLibraryExW(fileName, NULL, flags));
69 return LoadEx(GetSysPath(fileName), flags);
71 bool CLibrary::Load(LPCWSTR fileName)
74 return LoadOperations(::LoadLibraryW(fileName));
75 return Load(GetSysPath(fileName));
79 bool MyGetModuleFileName(HMODULE hModule, CSysString &result)
82 TCHAR fullPath[MAX_PATH + 2];
83 DWORD size = ::GetModuleFileName(hModule, fullPath, MAX_PATH + 1);
84 if (size <= MAX_PATH && size != 0)
93 bool MyGetModuleFileName(HMODULE hModule, UString &result)
98 wchar_t fullPath[MAX_PATH + 2];
99 DWORD size = ::GetModuleFileNameW(hModule, fullPath, MAX_PATH + 1);
100 if (size <= MAX_PATH && size != 0)
107 CSysString resultSys;
108 if (!MyGetModuleFileName(hModule, resultSys))
110 result = MultiByteToUnicodeString(resultSys, GetCurrentCodePage());