123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #pragma once
- #ifndef _INC_SHLWAPI
- #include < Shlwapi.h >
- #endif
- #pragma comment (lib, "shlwapi.lib")
- #ifndef VER_H
- #include < WinVer.h >
- #endif
- #pragma comment (lib, "Version.lib ")
- //-----------------------------------------------------------------------------
- // FileVersion
- //-----------------------------------------------------------------------------
- class FileVersion
- {
- using XPCTSTR = const char *;
- public:
- FileVersion ();
- FileVersion (XPCTSTR lpszFileName);
- virtual ~FileVersion ();
- public:
- bool Open (IN XPCTSTR lpszFileName);
- void Close (void);
- public:
- inline bool IsValid () const;
- inline WORD GetVersionMajor () const;
- inline WORD GetVersionMinor () const;
- inline WORD GetVersionBuild () const;
- inline WORD GetVersionRevision () const;
- std::string GetVersionString () const; // return a string like 7.3.1.6
- protected:
- bool GetVersionInfo (IN XPCTSTR lpszFileName);
- protected:
- bool m_bValid; // Version info is loaded
- VS_FIXEDFILEINFO m_vsffi; // Fixed File Info (FFI)
- };
- // The format of the version number is as follows (optional components are shown in square brackets ([and]) :
- // major.minor [.build [.revision]]
- // HIWORD (ffi.dwFileVersionMS) - major
- // LOWORD (ffi.dwFileVersionMS) - minor
- // HIWORD (ffi.dwFileVersionLS) - build
- // LOWORD (ffi.dwFileVersionLS) - revision
- inline bool FileVersion::IsValid (void) const
- { return m_bValid; }
- inline WORD FileVersion::GetVersionMajor (void) const
- { ASSERT (m_bValid); return HIWORD (m_vsffi.dwFileVersionMS); }
- inline WORD FileVersion::GetVersionMinor (void) const
- { ASSERT (m_bValid); return LOWORD (m_vsffi.dwFileVersionMS); }
- inline WORD FileVersion::GetVersionBuild (void) const
- { ASSERT (m_bValid); return HIWORD (m_vsffi.dwFileVersionLS); }
- inline WORD FileVersion::GetVersionRevision (void) const
- { ASSERT (m_bValid); return LOWORD (m_vsffi.dwFileVersionLS); }
|