修订版 | 5d3a04304fdb0b05e4133ceb095e76cdab5d0c62 (tree) |
---|---|
时间 | 2012-03-14 19:48:20 |
作者 | qwerty2501 <qwerty2501@user...> |
Commiter | qwerty2501 |
規定のブラウザ決定処理変更
@@ -112,10 +112,21 @@ static INLINE COOKIE_RESULT GetCookieSafari(LPCSTR targetString,LPCSTR targetEnd | ||
112 | 112 | |
113 | 113 | |
114 | 114 | /// |
115 | +///レジストリから規定のブラウザタイプを取得 | |
116 | +/// | |
117 | +static INLINE BROWSERTYPE getDefaultBrowserReg(HKEY hTopKey,LPCWSTR path,LPCWSTR sectionName); | |
118 | + | |
119 | +/// | |
115 | 120 | ///クッキーコピー用のパスを取得 |
116 | 121 | /// |
117 | 122 | static INLINE BOOL CookieFileCopy(LPCWSTR sourceFileName,LPWSTR pathBuf,int bufSize); |
118 | 123 | |
124 | + | |
125 | +/// | |
126 | +///ブラウザ名からブラウザタイプを取得 | |
127 | +/// | |
128 | +static INLINE BROWSERTYPE browserNameToBrowserType(LPCWSTR browserName); | |
129 | + | |
119 | 130 | const LPCWSTR FIREFOX_GET_COOKIE_SQL = L"SELECT a.name, a.value FROM moz_cookies a WHERE a.name = ?1 AND a.baseDomain = ?2 "; //ファイアフォックスクッキー取得用SQL |
120 | 131 | |
121 | 132 |
@@ -1158,80 +1169,97 @@ fileopenerr: | ||
1158 | 1169 | |
1159 | 1170 | BROWSERTYPE getDefaultBrowserType(){ |
1160 | 1171 | |
1161 | - BROWSERTYPE rslt = getDefaultBrowserTypeInvidialUser(); | |
1172 | + BROWSERTYPE rslt = getDefaultBrowserReg(HKEY_CURRENT_USER,L"Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice",L"Progid"); | |
1162 | 1173 | |
1163 | 1174 | if(rslt == BT_NOSETTING){ |
1164 | 1175 | |
1165 | - rslt = getDefaultBrowserTypeLocalMachine(); | |
1176 | + rslt = getDefaultBrowserReg(HKEY_CLASSES_ROOT,L"http\\shell\\open\\command",L""); | |
1166 | 1177 | } |
1167 | 1178 | |
1168 | 1179 | return rslt; |
1169 | 1180 | |
1170 | 1181 | } |
1171 | 1182 | |
1172 | - | |
1173 | -static BROWSERTYPE getDefaultBrowserTypeInvidialUser(){ | |
1183 | +static INLINE BROWSERTYPE getDefaultBrowserReg(HKEY hTopKey,LPCWSTR path,LPCWSTR sectionName){ | |
1174 | 1184 | |
1175 | 1185 | BROWSERTYPE rslt = BT_NOSETTING; |
1176 | 1186 | WCHAR browserName[_MAX_PATH]; |
1177 | 1187 | DWORD cName = sizeof(browserName); |
1178 | 1188 | HKEY hKey; |
1179 | 1189 | //レジストリキーを読み取り専用でオープン |
1180 | - if(RegOpenKeyEx(HKEY_CURRENT_USER,L"Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice",0,KEY_READ,&hKey) != ERROR_SUCCESS){ | |
1190 | + if(RegOpenKeyEx(hTopKey,path,0,KEY_READ,&hKey) != ERROR_SUCCESS){ | |
1181 | 1191 | return BT_NOSETTING; |
1182 | 1192 | } |
1183 | 1193 | |
1184 | - RegQueryValueEx(hKey,TEXT("Progid"),(LPDWORD)NULL,(LPDWORD)NULL,(LPBYTE)&browserName,&cName); | |
1194 | + RegQueryValueEx(hKey,sectionName,(LPDWORD)NULL,(LPDWORD)NULL,(LPBYTE)&browserName,&cName); | |
1185 | 1195 | |
1186 | - if(_tcscmp(browserName,TEXT("ChromeHTML")) == 0){ | |
1196 | + | |
1187 | 1197 | |
1188 | - rslt = BT_GOOGLE_CHROME; | |
1198 | + rslt = browserNameToBrowserType(browserName); | |
1189 | 1199 | |
1190 | - } else if(_tcscmp(browserName,TEXT("IE.HTTP")) == 0 ){ | |
1191 | 1200 | |
1192 | - rslt = BT_INTERNET_EXPLORER; | |
1193 | 1201 | |
1194 | - } else if(_tcscmp(browserName,TEXT("FirefoxURL"))==0){ | |
1202 | + RegCloseKey(hKey); | |
1203 | + return rslt; | |
1195 | 1204 | |
1196 | - rslt = BT_FIRE_FOX; | |
1205 | +} | |
1197 | 1206 | |
1198 | - } else if(_tcscmp(browserName,TEXT("SafariURL")) == 0){ | |
1199 | 1207 | |
1200 | - rslt = BT_SAFARI; | |
1201 | - } else if(_tcscmp(browserName,TEXT("Opera.Protocol"))==0){ | |
1208 | +static INLINE BROWSERTYPE browserNameToBrowserType(LPCWSTR browserName){ | |
1202 | 1209 | |
1203 | - rslt = BT_OPERA; | |
1210 | + WCHAR browserNameBuf[_MAX_PATH]; | |
1211 | + wcscpy(browserNameBuf,browserName); | |
1204 | 1212 | |
1205 | - } else if(_tcscmp(browserName,TEXT("Sleipnir2.HTTP"))==0){ | |
1213 | + CharUpperBuff(browserNameBuf,wcslen(browserNameBuf)); | |
1214 | + | |
1215 | + if( | |
1216 | + _tcsstr(browserNameBuf,L"CHROME") !=NULL || | |
1217 | + _tcsstr(browserNameBuf,L"GOOGLECHROME") != NULL | |
1218 | + ){ | |
1206 | 1219 | |
1207 | - rslt = BT_IE_COMPONENT; | |
1220 | + return BT_GOOGLE_CHROME; | |
1208 | 1221 | |
1209 | - } else { | |
1222 | + } else if( | |
1223 | + _tcsstr(browserNameBuf,L"IE") !=NULL || | |
1224 | + _tcsstr(browserNameBuf,L"INTERNETEXPLORER") !=NULL | |
1225 | + ){ | |
1210 | 1226 | |
1211 | - rslt = BT_IE_COMPONENT; | |
1227 | + return BT_INTERNET_EXPLORER; | |
1212 | 1228 | |
1213 | - } | |
1214 | - | |
1229 | + } else if( | |
1230 | + _tcsstr(browserNameBuf,L"FIREFOX") !=NULL | |
1231 | + ){ | |
1215 | 1232 | |
1216 | - | |
1233 | + return BT_FIRE_FOX; | |
1217 | 1234 | |
1235 | + } else if( | |
1236 | + _tcsstr(browserNameBuf,L"SAFARI") !=NULL | |
1237 | + ){ | |
1218 | 1238 | |
1239 | + return BT_SAFARI; | |
1240 | + } else if( | |
1241 | + _tcsstr(browserNameBuf,L"OPERA") !=NULL | |
1242 | + ){ | |
1219 | 1243 | |
1220 | - RegCloseKey(hKey); | |
1221 | - return rslt; | |
1244 | + return BT_OPERA; | |
1222 | 1245 | |
1223 | -} | |
1246 | + } else if( | |
1247 | + _tcsstr(browserNameBuf,L"SLEIPNIR") !=NULL | |
1248 | + ){ | |
1224 | 1249 | |
1250 | + return BT_IE_COMPONENT; | |
1225 | 1251 | |
1226 | -static BROWSERTYPE getDefaultBrowserTypeLocalMachine(){ | |
1252 | + } else { | |
1227 | 1253 | |
1254 | + return BT_IE_COMPONENT; | |
1228 | 1255 | |
1229 | - BROWSERTYPE rslt = BT_NOSETTING; | |
1256 | + } | |
1230 | 1257 | |
1258 | + | |
1259 | +} | |
1260 | + | |
1231 | 1261 | |
1232 | - return rslt; | |
1233 | 1262 | |
1234 | -} | |
1235 | 1263 | |
1236 | 1264 | |
1237 | 1265 |