| Revision | 5d3a04304fdb0b05e4133ceb095e76cdab5d0c62 (tree) |
|---|---|
| Time | 2012-03-14 19:48:20 |
| Author | 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 |