WebBrowserRela.pas 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. unit WebBrowserRela;
  2. uses
  3. Windows;
  4. interface
  5. function WriteAppNameToReg: Boolean;
  6. implementation
  7. function IsWin64:Boolean;//这个是别人写好的,不记得原出处了,见凉
  8. var
  9. Kernel32Handle:THandle;
  10. //IsWow64Process: function(Handle:Windows.THandle;var Res:Windows.BOOL):Windows.BOOL; stdcall;
  11. //GetNativeSystemInfo: procedure(var lpSystemInfo:TSystemInfo);stdcall;
  12. isWoW64: Bool;
  13. SystemInfo: TSystemInfo;
  14. const
  15. PROCESSOR_ARCHITECTURE_AMD64=9;
  16. PROCESSOR_ARCHITECTURE_IA64=6;
  17. begin
  18. Kernel32Handle:=GetModuleHandle('KERNEL32.DLL');
  19. if Kernel32Handle=0 then
  20. Kernel32Handle:=LoadLibrary('KERNEL32.DLL');
  21. if Kernel32Handle<>0 then
  22. begin
  23. IsWOW64Process:=GetProcAddress(Kernel32Handle,'IsWow64Process');
  24. GetNativeSystemInfo:=GetProcAddress(Kernel32Handle,'GetNativeSystemInfo');
  25. if Assigned(IsWow64Process) then
  26. begin
  27. IsWow64Process(GetCurrentProcess,isWoW64);
  28. Result:=isWoW64 and Assigned(GetNativeSystemInfo);
  29. if Result then
  30. begin
  31. GetNativeSystemInfo(SystemInfo);
  32. Result:=(SystemInfo.wProcessorArchitecture=PROCESSOR_ARCHITECTURE_AMD64)or
  33. (SystemInfo.wProcessorArchitecture=PROCESSOR_ARCHITECTURE_IA64);
  34. end;
  35. end
  36. else
  37. Result:=False;
  38. end
  39. else
  40. Result:=False;
  41. end;
  42. function GetIEVersionStr: string;
  43. var
  44. Reg: TRegistry; // registry access object
  45. begin
  46. Result := '';
  47. Reg := TRegistry.Create;
  48. try
  49. Reg.RootKey := Windows.HKEY_LOCAL_MACHINE;
  50. if Reg.OpenKeyReadOnly('Software\Microsoft\Internet Explorer') then
  51. begin
  52. //这儿新版本IE的取值位置不同所以要判断 <br> if Reg.ValueExists('svcVersion') then
  53. Result := Reg.ReadString('svcVersion')
  54. else
  55. if Reg.ValueExists('Version') then
  56. Result := Reg.ReadString('Version');
  57. end;
  58. finally
  59. Reg.Free;
  60. end;
  61. end;
  62. function WriteAppNameToReg:Boolean;
  63. var
  64. reg:TRegistry;
  65. sPath,sAppName:String;
  66. Sver:string;
  67. lenver:Integer;
  68. begin
  69. Result:=True;
  70. reg:=TRegistry.Create;
  71. try
  72. reg.RootKey:=HKEY_LOCAL_MACHINE;
  73. sPath:='SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION';
  74. if isWin64 then
  75. sPath:='SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION';
  76. if reg.OpenKey(sPath,True) then
  77. begin
  78. sAppName:=ExtractFileName(Application.ExeName);
  79. Sver:=GetIEVersionStr;
  80. lenver:=StrToInt(leftstr(Sver, Pos('.',Sver)-1));
  81. // if not reg.ValueExists(sAppName)then
  82. if lenver<=7 then
  83. reg.WriteInteger(sAppName,7000)
  84. else if lenver=8 then
  85. reg.WriteInteger(sAppName,8000)
  86. else if lenver=9 then
  87. reg.WriteInteger(sAppName,9000)
  88. else if lenver=10 then
  89. reg.WriteInteger(sAppName,10000)
  90. else if lenver=11 then
  91. reg.WriteInteger(sAppName,11001);
  92. end;
  93. reg.CloseKey;
  94. finally
  95. FreeAndNil(reg);
  96. end;
  97. end;
  98. end.