OSDN Git Service

URLクリック時リンク機能実装
[nlite/nlite.git] / nlite / nlite_appInfo.cpp
1 #include "stdafx.h"
2 #include "nlite_include.h"
3
4 namespace nlite {
5
6
7
8
9         CApplicationInfo::CApplicationInfo(){
10
11                 struct LANGANDCODEPAGE {
12
13                         WORD  wLanguage;
14                         WORD wCodePage;
15                 } *lpTranslate;
16                 TCHAR szModuleName[_MAX_PATH + 1] = {0};                                                                                //\83A\83v\83\8a\83P\81[\83V\83\87\83\93\83t\83@\83C\83\8b\96¼
17                 try{
18
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
21
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));        
24
25                         if(nRet <= 0){
26
27                                 throw AppInitException(__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
28                         }
29                         
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);
32
33                         if(dwSize <= 0){
34
35                                 throw AppInitException(__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
36                         }
37
38                         //\95K\97v\82È\83\81\83\82\83\8a\82ð\8am\95Û
39                         pBlock = malloc(dwSize);
40
41                         if(pBlock == NULL){
42
43                                 throw AppInitException(__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
44                         }
45                         //
46                         //\83A\83v\83\8a\83P\81[\83V\83\87\83\93\83o\81[\83W\83\87\83\93\8fî\95ñ\8eæ\93¾
47                         //
48                         BOOL bRet = GetFileVersionInfo(szModuleName,0,dwSize,pBlock);
49
50                         if(bRet != TRUE){
51                                 throw AppInitException(__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
52                         }
53
54
55                         UINT ulen;
56                         if(VerQueryValue(pBlock,TEXT("\\VarFileInfo\\Translation"),(LPVOID*)&lpTranslate,&ulen) == FALSE){
57                                 throw AppInitException(__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
58                         }
59
60                         TCHAR subBlock[_MAX_PATH];
61                         _stprintf(subBlock,TEXT("\\StringFileInfo\\%04x%04x\\ProductVersion"),lpTranslate->wLanguage,lpTranslate->wCodePage);
62
63                         if(VerQueryValue(pBlock,subBlock,(LPVOID *)&pProductVersion,&ulen) == FALSE){
64
65                                 throw AppInitException(__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
66
67                         }
68
69                         _stprintf(subBlock,TEXT("\\StringFileInfo\\%04x%04x\\OriginalFilename"),lpTranslate->wLanguage,lpTranslate->wCodePage);
70
71                         if(VerQueryValue(pBlock,subBlock,(LPVOID *)&pOriginalFileName,&ulen) == FALSE){
72
73                                 throw AppInitException(__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
74
75                         }
76
77                         _stprintf(subBlock,TEXT("\\StringFileInfo\\%04x%04x\\LegalCopyright"),lpTranslate->wLanguage,lpTranslate->wCodePage);
78
79                         if(VerQueryValue(pBlock,subBlock,(LPVOID *)&pLegalCopyright,&ulen) == FALSE){
80
81                                 throw AppInitException(__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
82
83                         }
84
85                         _stprintf(subBlock,TEXT("\\StringFileInfo\\%04x%04x\\ProductName"),lpTranslate->wLanguage,lpTranslate->wCodePage);
86
87                         if(VerQueryValue(pBlock,subBlock,(LPVOID *)&pProductName,&ulen) == FALSE){
88
89                                 throw AppInitException(__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
90
91                         }
92
93
94                 } catch (const AppInitException& e){
95
96
97                         safeFree(pBlock);
98
99                         throw e;
100                 }
101
102                 return;
103
104
105
106         }
107
108
109         CApplicationInfo::~CApplicationInfo(){
110
111
112                 safeFree(pBlock);
113         }
114
115         ///
116         ///\83V\83\93\83O\83\8b\83g\83\93
117         ///
118         CApplicationInfo& CApplicationInfo::getInstance(){
119                 static CApplicationInfo appInfo;
120                 return appInfo;
121
122         }
123
124
125
126         LPCTSTR CApplicationInfo::getProductVersion()const{
127
128                 return pProductVersion;
129
130         }
131
132         LPCTSTR CApplicationInfo::getOriginalFileName()const{
133
134                 return pOriginalFileName;
135
136         }
137
138         LPCTSTR CApplicationInfo::getLegalCopyright()const{
139
140                 return pLegalCopyright;
141
142         }
143
144         LPCTSTR CApplicationInfo::getProcuctName() const{
145
146                 return pProductName;
147         }
148
149
150         VOID CApplicationInfo::show() const {
151
152                 CNLiteString szApp;
153                 CNLiteString szOtherStuff;
154
155
156                 szApp = pOriginalFileName;
157                 szApp += TEXT("\82Ì\83A\83v\83\8a\83P\81[\83V\83\87\83\93\8fî\95ñ");
158
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;
163
164                 ShellAbout(NULL,szApp,szOtherStuff,NULL);
165         }
166
167 }