MODULVER.H
上传用户:shgx688
上传日期:2009-12-27
资源大小:855k
文件大小:2k
源码类别:

SNMP编程

开发平台:

MultiPlatform

  1. ////////////////////////////////////////////////////////////////
  2. // 1998 Microsoft Systems Journal
  3. //
  4. // If this code works, it was written by Paul DiLascia.
  5. // If not, I don't know who wrote it.
  6. //
  7. #ifndef __MODULEVER_H
  8. #define __MODULEVER_H
  9. #undef _INC_SHLWAPI
  10. #undef NOSHLWAPI
  11. #include <shlwapi.h>
  12. // tell linker to link with version.lib for VerQueryValue, etc.
  13. #pragma comment(linker, "/defaultlib:version.lib")
  14. #ifndef DLLVER_PLATFORM_WINDOWS
  15. #error ModuleVer.h requires a newer version of the SDK than you have!
  16. #error Please update your SDK files.
  17. #endif
  18. //////////////////
  19. // This class loads a library. Destructor frees for automatic cleanup.
  20. //
  21. class CLoadLibrary {
  22. private:
  23. HINSTANCE m_hinst;
  24. public:
  25. CLoadLibrary(LPCTSTR lpszName) : m_hinst(LoadLibrary(lpszName)) { }
  26. ~CLoadLibrary()  { FreeLibrary(m_hinst); }
  27. operator HINSTANCE () { return m_hinst; }  // cast operator
  28. };
  29. //////////////////
  30. // CModuleVersion version info about a module.
  31. // To use:
  32. //
  33. // CModuleVersion ver
  34. // if (ver.GetFileVersionInfo("_T("mymodule))) {
  35. // // info is in ver, you can call GetValue to get variable info like
  36. // CString s = ver.GetValue(_T("CompanyName"));
  37. // }
  38. //
  39. // You can also call the static fn DllGetVersion to get DLLVERSIONINFO.
  40. //
  41. class CModuleVersion : public VS_FIXEDFILEINFO {
  42. protected:
  43. BYTE* m_pVersionInfo; // all version info
  44. struct TRANSLATION {
  45. WORD langID; // language ID
  46. WORD charset; // character set (code page)
  47. } m_translation;
  48. public:
  49. CModuleVersion();
  50. virtual ~CModuleVersion();
  51. BOOL GetFileVersionInfo(LPCTSTR modulename);
  52. CString GetValue(LPCTSTR lpKeyName);
  53. static BOOL DllGetVersion(LPCTSTR modulename, DLLVERSIONINFO& dvi);
  54. };
  55. #endif