流浪的夸克 發表於 2020-3-3 10:25:00

Delphi TWebBrowser 内核版本修改

<p><strong><span style="font-size: 16px">Delphi TWebBrowser 内核版本修改</span></strong></p>
<p><span style="font-size: 16px">WebBrowser的默认内核是IE的</span></p>
<p><span style="font-size: 16px">&nbsp;</span></p>
<p><span style="font-size: 16px">改变内核版本的操作:</span></p>
<p><span style="font-size: 16px">1、在开始菜单内输入“regedit.exe”,进入注册表编辑器</span></p>
<p><span style="font-size: 16px">2、找到注册表项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION</span></p>
<p><span style="font-size: 16px">在右侧空白区域内单击鼠标右键,点击[新建]→</span></p>
<p><span style="font-size: 16px"><img src="https://img2020.cnblogs.com/i-beta/728850/202003/728850-20200303102306819-2110621641.png" alt=""></span></p>
<p><span style="font-size: 16px">新建的项取名为 你的执行文件名称(例如:MyApplication.exe),编辑值时,选择基数“十进制”,填写数值数据,这里填写11000(IE11)</span></p>
<p><span style="font-size: 16px"><img src="https://img2020.cnblogs.com/i-beta/728850/202003/728850-20200303102246937-167705939.png" alt=""></span></p>
<p><span style="font-size: 16px">&nbsp;</span></p>
<p><span style="font-size: 16px">&nbsp;</span></p>
<p><span style="font-size: 16px">不同IE版本所对应的DWORD值:</span></p>
<p><span style="font-size: 16px"><img src="https://img2020.cnblogs.com/i-beta/728850/202003/728850-20200303102327393-225911052.png" alt=""></span></p>
<p><span style="font-size: 14px">&nbsp;微软地址:https://msdn.microsoft.com/en-us/library/ee330730(v=vs.85).aspx#browser_emulation</span></p>
<p><span style="font-size: 14px">&nbsp;原文:https://www.cnblogs.com/doscanner/p/5611434.html</span></p>
<p><span style="font-size: 16px">有时间再补充博客,写一个Delphi 版的自动修改代码,以下代码适合Delphi7</span></p>
<p><span style="font-size: 16px">&nbsp;</span></p>
<div class="cnblogs_Highlighter">
<pre class="brush:delphi;gutter:true;"><span style="font-size: 16px">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;</span><br><span style="font-size: 16px">      lenver:=StrToInt( Copy(Sver,1,Pos('.',Sver)-1) );
         //lenver:=StrToInt(leftstr(Sver, Pos('.',Sver)-1));
         // if not reg.ValueExists(sAppName)then
          if lenver&lt;=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的取值位置不同所以要判断 </span><br><span style="font-size: 16px">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&lt;&gt;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;
</span></pre>
</div>
<p><span style="font-size: 16px">  </span></p>
<p>&nbsp;</p>
<p><span style="font-size: 16px">  </span></p>
<p><span style="font-size: 14px; color: rgba(136, 136, 136, 1)">&nbsp;创建时间:2020.03.03  更新时间:2020.11.19</span></p>
<p>&nbsp;</p>

</div>
<div id="MySignature" role="contentinfo">
    博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你有所帮助,谢谢!<br><br>
来源:https://www.cnblogs.com/guorongtao/p/12400890.html
頁: [1]
查看完整版本: Delphi TWebBrowser 内核版本修改