1如何获取当前IE版本?
方法:从注册表获取
代码如下:
std::vector<std::string> StringSplit(const std::string &text, char sep) {
std::vector<std::string> tokens;
std::size_t start = 0, end = 0;
while ((end = text.find(sep, start)) != std::string::npos) {
tokens.push_back(text.substr(start, end - start));
start = end + 1;
}
tokens.push_back(text.substr(start));
return tokens;
}
LONG GetStringFromReg(HKEY key,
const std::string& key_name,
std::string* value,
const std::string& default_value) {
*value = default_value;
char buffer[512];
DWORD buffer_size = sizeof(buffer);
ULONG nError;
nError = RegQueryValueExA(
key, key_name.c_str(), 0, NULL, (LPBYTE)buffer, &buffer_size);
if (ERROR_SUCCESS == nError) {
*value = buffer;
}
return nError;
}
//获取版本
DWORD GetBrowserEmulationMode() {
// http://msdn.microsoft.com/en-us/library/ee330720(v=vs.85).aspx
int browserVersion = 7;
std::string sBrowserVersion;
HKEY key;
bool success = true;
std::string path("SOFTWARE\\Microsoft\\Internet Explorer");
LONG nError = RegOpenKeyExA(HKEY_LOCAL_MACHINE, path.c_str(), 0, KEY_QUERY_VALUE, &key);
if (nError != ERROR_SUCCESS) {
success = false;
} else {
nError = GetStringFromReg(key, "svcVersion", &sBrowserVersion, "7");
if (nError != ERROR_SUCCESS) {
nError = GetStringFromReg(key, "version", &sBrowserVersion, "7");
if (nError != ERROR_SUCCESS) {
success = false;
}
}
if (RegCloseKey(key) != ERROR_SUCCESS) {
success = false;
}
}
DWORD mode = -1;
if (success) {
browserVersion = std::atoi(StringSplit(sBrowserVersion, '.').at(0).c_str()); // convert base 16 number in s to int
switch (browserVersion) {
case 6:
mode = 6000;
break;
case 7:
mode = 7000; // Webpages containing standards-based !DOCTYPE directives are displayed in IE7 Standards mode. Default value for applications hosting the WebBrowser Control.
break;
case 8:
mode = 8000; // Webpages containing standards-based !DOCTYPE directives are displayed in IE8 mode. Default value for Internet Explorer 8
break;
case 9:
mode = 9000; // Internet Explorer 9. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode. Default value for Internet Explorer 9.
break;
case 10:
mode = 10000;
break;
case 11:
mode = 11000;
break;
default:
// use IE10 mode by default
mode = -1;
break;
}
} else {
mode = -1;
}
return mode;
}