Files
TradeBlotter/Utility/WebBrowserUtils.cs
2024-02-23 06:58:53 -05:00

72 lines
2.5 KiB
C#

using MarketData;
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
namespace TradeBlotter.UIUtils
{
public class WebBrowserHelper
{
private WebBrowserHelper()
{
}
public static bool SetWebBrowserCompatibility()
{
RegistryKey regkey = null;
try
{
int browserVersion;
int regVal;
browserVersion = BrowserVersion();
// set the appropriate IE verbrowsersion
if (browserVersion >= 11)regVal = 11001;
else if (browserVersion == 10)regVal = 10001;
else if (browserVersion == 9)regVal = 9999;
else if (browserVersion == 8)regVal = 8888;
else regVal = 7000;
regkey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"SOFTWARE\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EMULATION", true);
if (null == regkey)
{
regkey = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", RegistryKeyPermissionCheck.ReadWriteSubTree);
if (null == regkey) return false;
}
if (regkey.GetValue(System.Diagnostics.Process.GetCurrentProcess().ProcessName + ".exe") == null)regkey.SetValue(System.Diagnostics.Process.GetCurrentProcess().ProcessName + ".exe", regVal, RegistryValueKind.DWord);
return true;
}
catch (Exception exception)
{
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("[SetWebBrowserCompatibility]{0}",exception.ToString()));
return false;
}
finally
{
if (regkey != null) {regkey.Close(); regkey.Dispose();}
}
}
private static int BrowserVersion()
{
string strKeyPath = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer";
string[] versionTargets = new string[] { "svcVersion", "svcUpdateVersion", "Version", "W2kVersion" };
int maxVer = 0;
for (int index = 0; index < versionTargets.Length; index++)
{
object objVal = Microsoft.Win32.Registry.GetValue(strKeyPath, versionTargets[index], "0");
string strVal = System.Convert.ToString(objVal);
if (null == strVal) continue;
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);
}
return maxVer;
}
}
}