Delphi Base

WindSon

导航

Delphi WebBrowser内核版本修改D7

  private
    { Private declarations }
  public
    { Public declarations }
    function WriteAppNameToReg:Boolean;
    function GetIEVersionStr: string;
    function IsWin64:Boolean;

var
  Form3: TForm3;

implementation

function TForm3.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;
function TForm3.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 TForm3.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) );
          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;
end;
procedure TForm3.FormCreate(Sender: TObject);
begin
WriteAppNameToReg;
end;

 

posted on 2020-03-18 23:34  windsonvip  阅读(445)  评论(0编辑  收藏  举报