1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
"""
(C) 2014-2018 Roman Sirokov and contributors
Licensed under BSD license
http://github.com/r0x0r/pywebview/
"""
import sys
def set_ie_mode():
"""
By default hosted IE control emulates IE7 regardless which version of IE is installed. To fix this, a proper value
must be set for the executable.
See http://msdn.microsoft.com/en-us/library/ee330730%28v=vs.85%29.aspx#browser_emulation for details on this
behaviour.
"""
try:
import _winreg as winreg # Python 2
except ImportError:
import winreg # Python 3
def get_ie_mode():
"""
Get the installed version of IE
:return:
"""
ie_key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r"Software\Microsoft\Internet Explorer")
try:
version, type = winreg.QueryValueEx(ie_key, "svcVersion")
except:
version, type = winreg.QueryValueEx(ie_key, "Version")
winreg.CloseKey(ie_key)
if version.startswith("11"):
value = 0x2AF9
elif version.startswith("10"):
value = 0x2711
elif version.startswith("9"):
value = 0x270F
elif version.startswith("8"):
value = 0x22B8
else:
value = 0x2AF9 # Set IE11 as default
return value
try:
browser_emulation = winreg.OpenKey(winreg.HKEY_CURRENT_USER,
r"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION",
0, winreg.KEY_ALL_ACCESS)
except WindowsError:
browser_emulation = winreg.CreateKeyEx(winreg.HKEY_CURRENT_USER,
r"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION",
0, winreg.KEY_ALL_ACCESS)
try:
dpi_support = winreg.OpenKey(winreg.HKEY_CURRENT_USER,
r"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_96DPI_PIXEL",
0, winreg.KEY_ALL_ACCESS)
except WindowsError:
dpi_support = winreg.CreateKeyEx(winreg.HKEY_CURRENT_USER,
r"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_96DPI_PIXEL",
0, winreg.KEY_ALL_ACCESS)
mode = get_ie_mode()
executable_name = sys.executable.split("\\")[-1]
winreg.SetValueEx(browser_emulation, executable_name, 0, winreg.REG_DWORD, mode)
winreg.CloseKey(browser_emulation)
winreg.SetValueEx(dpi_support, executable_name, 0, winreg.REG_DWORD, 1)
winreg.CloseKey(dpi_support)
|