DLL.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // Windows/DLL.h
  2. #ifndef __WINDOWS_DLL_H
  3. #define __WINDOWS_DLL_H
  4. #include "../Common/MyString.h"
  5. namespace NWindows {
  6. namespace NDLL {
  7. class CLibrary
  8. {
  9. bool LoadOperations(HMODULE newModule);
  10. protected:
  11. HMODULE _module;
  12. public:
  13. operator HMODULE() const { return _module; }
  14. HMODULE* operator&() { return &_module; }
  15. CLibrary():_module(NULL) {};
  16. ~CLibrary();
  17. void Attach(HMODULE m)
  18. {
  19. Free();
  20. _module = m;
  21. }
  22. HMODULE Detach()
  23. {
  24. HMODULE m = _module;
  25. _module = NULL;
  26. return m;
  27. }
  28. // operator HMODULE() const { return _module; };
  29. bool IsLoaded() const { return (_module != NULL); };
  30. bool Free();
  31. bool LoadEx(LPCTSTR fileName, DWORD flags = LOAD_LIBRARY_AS_DATAFILE);
  32. bool Load(LPCTSTR fileName);
  33. #ifndef _UNICODE
  34. bool LoadEx(LPCWSTR fileName, DWORD flags = LOAD_LIBRARY_AS_DATAFILE);
  35. bool Load(LPCWSTR fileName);
  36. #endif
  37. FARPROC GetProcAddress(LPCSTR procName) const
  38. { return ::GetProcAddress(_module, procName); }
  39. };
  40. bool MyGetModuleFileName(HMODULE hModule, CSysString &result);
  41. #ifndef _UNICODE
  42. bool MyGetModuleFileName(HMODULE hModule, UString &result);
  43. #endif
  44. }}
  45. #endif