www.pudn.com > VX.rar > ModulVer.h


//////////////////////////////////////////////////////////////// 
// 1998 Microsoft Systems Journal 
// 
// If this code works, it was written by Paul DiLascia. 
// If not, I don't know who wrote it. 
// 
#ifndef __MODULEVER_H 
#define __MODULEVER_H 
 
#undef _INC_SHLWAPI 
#undef NOSHLWAPI 
#include  
 
// tell linker to link with version.lib for VerQueryValue, etc. 
#pragma comment(linker, "/defaultlib:version.lib") 
 
#ifndef DLLVER_PLATFORM_WINDOWS 
#error ModuleVer.h requires a newer version of the SDK than you have! 
#error Please update your SDK files. 
#endif 
 
////////////////// 
// This class loads a library. Destructor frees for automatic cleanup. 
// 
class AFX_EXT_CLASS CLoadLibrary { 
private: 
	HINSTANCE m_hinst; 
public: 
	CLoadLibrary(LPCTSTR lpszName) : m_hinst(LoadLibrary(lpszName)) { } 
	~CLoadLibrary()		 { FreeLibrary(m_hinst); } 
	operator HINSTANCE () { return m_hinst; } 	// cast operator 
}; 
 
////////////////// 
// CModuleVersion version info about a module. 
// To use: 
// 
// CModuleVersion ver 
// if (ver.GetFileVersionInfo("_T("mymodule))) { 
//		// info is in ver, you can call GetValue to get variable info like 
//		CString s = ver.GetValue(_T("CompanyName")); 
// } 
// 
// You can also call the static fn DllGetVersion to get DLLVERSIONINFO. 
// 
class AFX_EXT_CLASS CModuleVersion : public VS_FIXEDFILEINFO { 
protected: 
	BYTE* m_pVersionInfo;	// all version info 
 
	struct TRANSLATION { 
		WORD langID;			// language ID 
		WORD charset;			// character set (code page) 
	} m_translation; 
 
public: 
	CModuleVersion(); 
	virtual ~CModuleVersion(); 
 
	BOOL		GetFileVersionInfo(LPCTSTR modulename); 
	CString	GetValue(LPCTSTR lpKeyName); 
	static BOOL DllGetVersion(LPCTSTR modulename, DLLVERSIONINFO& dvi); 
}; 
 
#endif