2 #include "nlite_include.h"
9 CApplicationInfo::CApplicationInfo(){
11 struct LANGANDCODEPAGE {
16 TCHAR szModuleName[_MAX_PATH + 1] = {0}; //
\83A
\83v
\83\8a\83P
\81[
\83V
\83\87\83\93\83t
\83@
\83C
\83\8b\96¼
19 DWORD dwReserved; //
\83t
\83@
\83C
\83\8b\8fî
\95ñ
\8ai
\94[
\97p
20 LPTSTR errMessage = NULL; //
\83G
\83\89\81[
\94
\90¶
\82µ
\82½
\83\81\83b
\83Z
\81[
\83W
22 //
\83A
\83v
\83\8a\83P
\81[
\83V
\83\87\83\93\83t
\83@
\83C
\83\8b\96¼
\8eæ
\93¾
23 int nRet = GetModuleFileName(NULL,szModuleName,ARRAYSIZE(szModuleName));
27 throw AppInitException(__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
30 //
\83A
\83v
\83\8a\83P
\81[
\83V
\83\87\83\93\83o
\81[
\83W
\83\87\83\93\8fî
\95ñ
\82Ì
\83T
\83C
\83Y
\8eæ
\93¾
31 DWORD dwSize = GetFileVersionInfoSize(szModuleName,&dwReserved);
35 throw AppInitException(__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
38 //
\95K
\97v
\82È
\83\81\83\82\83\8a\82ð
\8am
\95Û
39 pBlock = malloc(dwSize);
43 throw AppInitException(__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
46 //
\83A
\83v
\83\8a\83P
\81[
\83V
\83\87\83\93\83o
\81[
\83W
\83\87\83\93\8fî
\95ñ
\8eæ
\93¾
48 BOOL bRet = GetFileVersionInfo(szModuleName,0,dwSize,pBlock);
51 throw AppInitException(__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
56 if(VerQueryValue(pBlock,TEXT("\\VarFileInfo\\Translation"),(LPVOID*)&lpTranslate,&ulen) == FALSE){
57 throw AppInitException(__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
60 TCHAR subBlock[_MAX_PATH];
61 _stprintf(subBlock,TEXT("\\StringFileInfo\\%04x%04x\\ProductVersion"),lpTranslate->wLanguage,lpTranslate->wCodePage);
63 if(VerQueryValue(pBlock,subBlock,(LPVOID *)&pProductVersion,&ulen) == FALSE){
65 throw AppInitException(__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
69 _stprintf(subBlock,TEXT("\\StringFileInfo\\%04x%04x\\OriginalFilename"),lpTranslate->wLanguage,lpTranslate->wCodePage);
71 if(VerQueryValue(pBlock,subBlock,(LPVOID *)&pOriginalFileName,&ulen) == FALSE){
73 throw AppInitException(__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
77 _stprintf(subBlock,TEXT("\\StringFileInfo\\%04x%04x\\LegalCopyright"),lpTranslate->wLanguage,lpTranslate->wCodePage);
79 if(VerQueryValue(pBlock,subBlock,(LPVOID *)&pLegalCopyright,&ulen) == FALSE){
81 throw AppInitException(__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
85 _stprintf(subBlock,TEXT("\\StringFileInfo\\%04x%04x\\ProductName"),lpTranslate->wLanguage,lpTranslate->wCodePage);
87 if(VerQueryValue(pBlock,subBlock,(LPVOID *)&pProductName,&ulen) == FALSE){
89 throw AppInitException(__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
94 } catch (const AppInitException& e){
109 CApplicationInfo::~CApplicationInfo(){
116 ///
\83V
\83\93\83O
\83\8b\83g
\83\93
118 CApplicationInfo& CApplicationInfo::getInstance(){
119 static CApplicationInfo appInfo;
126 LPCTSTR CApplicationInfo::getProductVersion()const{
128 return pProductVersion;
132 LPCTSTR CApplicationInfo::getOriginalFileName()const{
134 return pOriginalFileName;
138 LPCTSTR CApplicationInfo::getLegalCopyright()const{
140 return pLegalCopyright;
144 LPCTSTR CApplicationInfo::getProcuctName() const{
150 VOID CApplicationInfo::show() const {
153 CNLiteString szOtherStuff;
156 szApp = pOriginalFileName;
157 szApp += TEXT("
\82Ì
\83A
\83v
\83\8a\83P
\81[
\83V
\83\87\83\93\8fî
\95ñ");
159 szOtherStuff = TEXT("
\83o
\81[
\83W
\83\87\83\93\8fî
\95ñ: ");
160 szOtherStuff += pProductVersion;
161 szOtherStuff += TEXT("\r\n
\92\98\8dì
\8c : ");
162 szOtherStuff += pLegalCopyright;
164 ShellAbout(NULL,szApp,szOtherStuff,NULL);