• 【转】解决Delphi WebBrowser 无法调用当前浏览器的版本


    procedure TregedtIE.FormCreate(Sender: TObject);  
    begin  
      WriteAppNameToReg;  
      WebBrowser1.Navigate('C:a.html');  
    end;  
    {--}  
    {需要注意是GetNativeSystemInfo 函数从Windows XP 开始才有, 
     而 IsWow64Process 函数从 Windows XP with SP2 以及 Windows Server 2003 with SP1 开始才有。 
     所以使用该函数的时候最好用GetProcAddress 。 
    }  
    function TregedtIE.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 TregedtIE.WriteAppNameToReg: Boolean;  
    var  
      reg :TRegistry;  
      sPath,sAppName:String;  
    begin  
      Result := True;  
      reg := TRegistry.Create;  
      try  
        reg.RootKey := HKEY_LOCAL_MACHINE;  
        sPath :'SOFTWAREMicrosoftInternet ExplorerMAINFeatureControlFEATURE_BROWSER_EMULATION';  
        if isWin64 then  
          sPath :'SOFTWAREWow6432NodeMicrosoftInternet ExplorerMAINFeatureControlFEATURE_BROWSER_EMULATION';  
        if reg.OpenKey(sPath,True) then  
        begin  
          sAppName := ExtractFileName(Application.ExeName);  
         if not reg.ValueExists(sAppName) then  
            reg.WriteInteger(sAppName,0);  
        end;  
        reg.CloseKey;  
      finally  
        FreeAndNil(reg);  
      end;  
    end;  
    {--}  
    procedure TregedtIE.WebBrowser1DocumentComplete(ASender: TObject;  
      const pDisp: IDispatch; var URL: OleVariant);  
    begin  
      WebBrowser1.OleObject.Document.Body.Scroll :'no';  
      WebBrowser1.OleObject.Document.Body.style.border :'none';  
      webbrowser1.OleObject.Document.Body.Style.margin :'0px';  
    end;  

    http://blog.csdn.net/wensibo/article/details/25971863

  • 相关阅读:
    将程序集从GAC中导出
    客户端访问WebService复杂参数类型的使用和参数的序列化与反序列化
    (译Workflow in the 2007 Microsoft Office System)介绍(部分)
    处理PageRequestManager事件
    测试 IPersonalizable接口
    几篇很好的文章
    交换两个数,不引入第三个变量
    Dijkstra算法
    给定一个整数,求它的二进制表示中有多少个1。
    自律
  • 原文地址:https://www.cnblogs.com/zhqian/p/6034744.html
Copyright © 2020-2023  润新知