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

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM