Delphi WebBrowser内核版本修改

 

手动更改WebBrowser内核版本的操作:

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

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

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

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

 

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

 

写一个Delphi 版的自动修改IE内核版本的代码,以下代码适合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,Truethen

        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;

  

 

  

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值