Delphi TWebBrowser 内核版本修改

Delphi TWebBrowser 内核版本修改

WebBrowser的默认内核是IE的

 

改变内核版本的操作:

1、在开始菜单内输入“regedit.exe”,进入注册表编辑器

2、找到注册表项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

在右侧空白区域内单击鼠标右键,点击[新建]→[DWORD(32-位)值]

新建的项取名为 你的执行文件名称(例如:MyApplication.exe),编辑值时,选择基数“十进制”,填写数值数据,这里填写11000(IE11)

 

 

不同IE版本所对应的DWORD值:

 微软地址:https://msdn.microsoft.com/en-us/library/ee330730(v=vs.85).aspx#browser_emulation

 原文:https://www.cnblogs.com/doscanner/p/5611434.html

有时间再补充博客,写一个Delphi 版的自动修改代码,以下代码适合Delphi7

 

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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
function TFrom1.WriteAppNameToReg:Boolean;    //写入到注册表
 var
 reg:TRegistry;
 sPath,sAppName:String;
 Sver:string;
 lenver:Integer;
begin
      Result:=True;
      reg:=TRegistry.Create;
    try
        reg.RootKey:=HKEY_LOCAL_MACHINE;
        sPath:='SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION';
        if isWin64 then
        sPath:='SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION';
        if reg.OpenKey(sPath,True) then
        begin
         sAppName:=ExtractFileName(Application.ExeName);
         Sver:=GetIEVersionStr;      lenver:=StrToInt( Copy(Sver,1,Pos('.',Sver)-1) );
         //lenver:=StrToInt(leftstr(Sver, Pos('.',Sver)-1));
         // if not reg.ValueExists(sAppName)then
          if lenver<=7 then
            reg.WriteInteger(sAppName,7000)
          else
          if lenver=8 then
          begin
            reg.WriteInteger(sAppName,8000)
          end
          else
          if lenver=9 then
          begin
            reg.WriteInteger(sAppName,9000)
          end
           else
          if lenver=10 then
          begin
            reg.WriteInteger(sAppName,10000)
          end
           else
          if lenver=11 then
          begin
            reg.WriteInteger(sAppName,11001)
          end;
  
  
        end;
        reg.CloseKey;
          
    finally
       FreeAndNil(reg);
    end;
 
 
function TFrom1.GetIEVersionStr: string;   //获取IE版本
var
 Reg: TRegistry; // registry access object
begin
 Result := '';
 Reg := TRegistry.Create;
 try
    Reg.RootKey := Windows.HKEY_LOCAL_MACHINE;
 if Reg.OpenKeyReadOnly('Software\Microsoft\Internet Explorer') then
 begin
  //这儿新版本IE的取值位置不同所以要判断   if Reg.ValueExists('svcVersion') then
    Result := Reg.ReadString('svcVersion')
   else
   if Reg.ValueExists('Version') then
    Result := Reg.ReadString('Version');
 end;
 finally
   Reg.Free;
 end;
end;
 
 
function TForm1.IsWin64:Boolean;   // 判断系统
var
 Kernel32Handle:THandle;
 IsWow64Process: function(Handle:Windows.THandle;var Res:Windows.BOOL):Windows.BOOL;stdcall;
 GetNativeSystemInfo:procedure(var lpSystemInfo:TSystemInfo);stdcall;
 isWoW64: Bool;
 SystemInfo: TSystemInfo;
const
 PROCESSOR_ARCHITECTURE_AMD64=9;
 PROCESSOR_ARCHITECTURE_IA64=6;
begin
  Kernel32Handle:=GetModuleHandle('KERNEL32.DLL');
  if Kernel32Handle=0 then
     Kernel32Handle:=LoadLibrary('KERNEL32.DLL');
  if Kernel32Handle<>0 then
  begin
    IsWOW64Process:=GetProcAddress(Kernel32Handle,'IsWow64Process');
    GetNativeSystemInfo:=GetProcAddress(Kernel32Handle,'GetNativeSystemInfo');
    if Assigned(IsWow64Process) then
    begin
      IsWow64Process(GetCurrentProcess,isWoW64);
      Result:=isWoW64 and Assigned(GetNativeSystemInfo);
      if Result then
      begin
         GetNativeSystemInfo(SystemInfo);
         Result:=(SystemInfo.wProcessorArchitecture=PROCESSOR_ARCHITECTURE_AMD64)or
         (SystemInfo.wProcessorArchitecture=PROCESSOR_ARCHITECTURE_IA64);
      end;
    end
    else
    Result:=False;
  end
  else
  Result:=False;
end;

  

 

  

 创建时间:2020.03.03  更新时间:2020.11.19

 

posted on   滔Roy  阅读(1057)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报

导航

点击右上角即可分享
微信分享提示