在Webbrowser控件中使用Internet Explorer的最新版本
C#Windows Forms
应用程序中webbrowser控件的默认版本为7。 浏览器仿真 文章将我更改为9
,但是如何在webbrowser控件中使用最新版本的已安装Internet Explorer?
回答:
我看到了维尔的答案。我认为是正确的,但是我没有为我工作。也许我正在使用.NET 4,并且正在使用64x OS,所以请检查一下。
您可以进行设置或在启动应用程序时进行检查:
private void Form1_Load(object sender, EventArgs e){
var appName = Process.GetCurrentProcess().ProcessName + ".exe";
SetIE8KeyforWebBrowserControl(appName);
}
private void SetIE8KeyforWebBrowserControl(string appName)
{
RegistryKey Regkey = null;
try
{
// For 64 bit machine
if (Environment.Is64BitOperatingSystem)
Regkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\\Wow6432Node\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EMULATION", true);
else //For 32 bit machine
Regkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EMULATION", true);
// If the path is not correct or
// if the user haven't priviledges to access the registry
if (Regkey == null)
{
MessageBox.Show("Application Settings Failed - Address Not found");
return;
}
string FindAppkey = Convert.ToString(Regkey.GetValue(appName));
// Check if key is already present
if (FindAppkey == "8000")
{
MessageBox.Show("Required Application Settings Present");
Regkey.Close();
return;
}
// If a key is not present add the key, Key value 8000 (decimal)
if (string.IsNullOrEmpty(FindAppkey))
Regkey.SetValue(appName, unchecked((int)0x1F40), RegistryValueKind.DWord);
// Check for the key after adding
FindAppkey = Convert.ToString(Regkey.GetValue(appName));
if (FindAppkey == "8000")
MessageBox.Show("Application Settings Applied Successfully");
else
MessageBox.Show("Application Settings Failed, Ref: " + FindAppkey);
}
catch (Exception ex)
{
MessageBox.Show("Application Settings Failed");
MessageBox.Show(ex.Message);
}
finally
{
// Close the Registry
if (Regkey != null)
Regkey.Close();
}
}
您可能会发现messagebox.show,仅用于测试。
-Internet Explorer11。无论
!DOCTYPE
指令如何,网页均以IE11边缘模式显示。-Internet
Explorer11。包含基于标准的
!DOCTYPE
指令的网页以IE11边缘模式显示。IE11的默认值。-Internet
Explorer10。无论使用何种
!DOCTYPE
指令,网页均以IE10标准模式显示。-Internet Explorer10。包含基于标准的
!DOCTYPE
指令的网页以IE10标准模式显示。Internet Explorer 10的默认值。
-Internet Explorer9。无论使用何种
!DOCTYPE
指令,网页均以IE9标准模式显示。-Internet Explorer9。包含基于标准的
!DOCTYPE
指令的网页以IE9模式显示。-网页以IE8标准模式显示,与
!DOCTYPE
指令无关。-包含基于标准的
!DOCTYPE
指令的网页以IE8模式显示。-包含基于标准的
!DOCTYPE
指令的网页以IE7标准模式显示。
参考: MSDN:Internet功能控件
我看到像Skype这样的应用程序使用10001。我不知道。
安装程序将更改注册表。您可能需要在清单文件中添加一行,以避免由于注册表更改权限而导致的错误:
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
这是一个将在Windows上获取IE的最新版本并进行相应更改的类;
public class WebBrowserHelper{
public static int GetEmbVersion()
{
int ieVer = GetBrowserVersion();
if (ieVer > 9)
return ieVer * 1000 + 1;
if (ieVer > 7)
return ieVer * 1111;
return 7000;
} // End Function GetEmbVersion
public static void FixBrowserVersion()
{
string appName = System.IO.Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetExecutingAssembly().Location);
FixBrowserVersion(appName);
}
public static void FixBrowserVersion(string appName)
{
FixBrowserVersion(appName, GetEmbVersion());
} // End Sub FixBrowserVersion
// FixBrowserVersion("<YourAppName>", 9000);
public static void FixBrowserVersion(string appName, int ieVer)
{
FixBrowserVersion_Internal("HKEY_LOCAL_MACHINE", appName + ".exe", ieVer);
FixBrowserVersion_Internal("HKEY_CURRENT_USER", appName + ".exe", ieVer);
FixBrowserVersion_Internal("HKEY_LOCAL_MACHINE", appName + ".vshost.exe", ieVer);
FixBrowserVersion_Internal("HKEY_CURRENT_USER", appName + ".vshost.exe", ieVer);
} // End Sub FixBrowserVersion
private static void FixBrowserVersion_Internal(string root, string appName, int ieVer)
{
try
{
//For 64 bit Machine
if (Environment.Is64BitOperatingSystem)
Microsoft.Win32.Registry.SetValue(root + @"\Software\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", appName, ieVer);
else //For 32 bit Machine
Microsoft.Win32.Registry.SetValue(root + @"\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", appName, ieVer);
}
catch (Exception)
{
// some config will hit access rights exceptions
// this is why we try with both LOCAL_MACHINE and CURRENT_USER
}
} // End Sub FixBrowserVersion_Internal
public static int GetBrowserVersion()
{
// string strKeyPath = @"HKLM\SOFTWARE\Microsoft\Internet Explorer";
string strKeyPath = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer";
string[] ls = new string[] { "svcVersion", "svcUpdateVersion", "Version", "W2kVersion" };
int maxVer = 0;
for (int i = 0; i < ls.Length; ++i)
{
object objVal = Microsoft.Win32.Registry.GetValue(strKeyPath, ls[i], "0");
string strVal = System.Convert.ToString(objVal);
if (strVal != null)
{
int iPos = strVal.IndexOf('.');
if (iPos > 0)
strVal = strVal.Substring(0, iPos);
int res = 0;
if (int.TryParse(strVal, out res))
maxVer = Math.Max(maxVer, res);
} // End if (strVal != null)
} // Next i
return maxVer;
} // End Function GetBrowserVersion
}
使用类如下
WebBrowserHelper.FixBrowserVersion();WebBrowserHelper.FixBrowserVersion("SomeAppName");
WebBrowserHelper.FixBrowserVersion("SomeAppName",intIeVer);
您可能会遇到Windows 10的可比性问题,可能由于您的网站本身而需要添加此元标记
<meta http-equiv="X-UA-Compatible" content="IE=11" >
请享用 :)
以上是 在Webbrowser控件中使用Internet Explorer的最新版本 的全部内容, 来源链接: utcz.com/qa/430246.html