other-licenses/7zstub/src/Windows/DLL.h

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/other-licenses/7zstub/src/Windows/DLL.h	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,54 @@
     1.4 +// Windows/DLL.h
     1.5 +
     1.6 +#ifndef __WINDOWS_DLL_H
     1.7 +#define __WINDOWS_DLL_H
     1.8 +
     1.9 +#include "../Common/String.h"
    1.10 +
    1.11 +namespace NWindows {
    1.12 +namespace NDLL {
    1.13 +
    1.14 +class CLibrary
    1.15 +{
    1.16 +  bool LoadOperations(HMODULE newModule);
    1.17 +protected:
    1.18 +  HMODULE _module;
    1.19 +public:
    1.20 +  operator HMODULE() const { return _module; }
    1.21 +  HMODULE* operator&() { return &_module; }
    1.22 +
    1.23 +  CLibrary():_module(NULL) {};
    1.24 +  ~CLibrary();
    1.25 +  void Attach(HMODULE m)
    1.26 +  {
    1.27 +    Free();
    1.28 +    _module = m;
    1.29 +  }
    1.30 +  HMODULE Detach()
    1.31 +  {
    1.32 +    HMODULE m = _module;
    1.33 +    _module = NULL;
    1.34 +    return m;
    1.35 +  }
    1.36 +
    1.37 +  // operator HMODULE() const { return _module; };
    1.38 +  // bool IsLoaded() const { return (_module != NULL); };
    1.39 +  bool Free();
    1.40 +  bool LoadEx(LPCTSTR fileName, DWORD flags = LOAD_LIBRARY_AS_DATAFILE);
    1.41 +  bool Load(LPCTSTR fileName);
    1.42 +  #ifndef _UNICODE
    1.43 +  bool LoadEx(LPCWSTR fileName, DWORD flags = LOAD_LIBRARY_AS_DATAFILE);
    1.44 +  bool Load(LPCWSTR fileName);
    1.45 +  #endif
    1.46 +  FARPROC GetProcAddress(LPCSTR procName) const
    1.47 +    { return ::GetProcAddress(_module, procName); }
    1.48 +};
    1.49 +
    1.50 +bool MyGetModuleFileName(HMODULE hModule, CSysString &result);
    1.51 +#ifndef _UNICODE
    1.52 +bool MyGetModuleFileName(HMODULE hModule, UString &result);
    1.53 +#endif
    1.54 +
    1.55 +}}
    1.56 +
    1.57 +#endif

mercurial