TChromium加载URL时出错



我发现了一个出色的Delphi Chromium项目,用于将Chrome嵌入到Delphi表单中。经过一点黑客攻击,它在Delphi7中运行良好,我可以运行演示应用程序。

然而,当我使用该组件创建自己的应用程序时,我无法加载自己的url。我有访问权限被侵犯。

Chromium2.Browser.MainFrame.LoadUrl('http://www.example.com');

TChromium组件正在工作,我将所有DLL都放在正确的位置,因为如果我设置DefaultUrl,它可以正常工作。

我在TPageControl页面中有Chromium2,通过按钮的OnClick事件,我调用上面的代码。我收到访问违规。大型机是nil

我找不到解决这个问题的方法,有人能解决这个问题吗?

我仍然没有找到解决方案,但我发现了以下关于的工作

procedure TForm1.lblWebsiteClick(Sender: TObject);
var MainFrame : ICefFrame;
begin
  MainFrame := Chromium2.Browser.GetMainFrame;
  MainFrame.LoadUrl('http://www.cookingisfun.ie');
end;

问题是大型机只有在页面加载后才加载。

有一件事,你需要做:

if Assigned(Chromium2.Browser.MainFrame)
    then  Chromium2.Browser.MainFrame...

然而,这不是首选的导航方式,但您应该这样做:

Chromium1.Load( theUrl );

如果您仍然想使用MainFrame,请在OnLoadEnd事件中执行。

有类似的问题,几个小时后找到了问题:

  1. 如果TChromium是应用程序的主要形式,那么可以。

  2. 如果TChromium不在主窗体上(或在框架上(,则:

    1. 打开cef.inc并移除点以定义:

      {.$DEFINE CEF_MULTI_THREADED_MESSAGE_LOOP} 
      
    2. 删除DefaultURL值,使其为空字符串。

我在谷歌上搜索了CEF_MULTI_THREADED_MESSAGE_LOOP,但并没有得到太多结果。

最后,出现了调整大小/刷新问题(即使对齐设置为alClient(。短期修复在
内crmLoadEnd事件执行类似的操作:

     if crm.Height < panclient.Height then
        crm.Height := panclient.Height;

在构建应用程序的文件夹中是否有所有必需的DLL?

您需要:libcef.dll,icudt.dll,…

在他们的支持组上检查此线程。


当您构建/运行演示时,它们将在以下子文件夹(*DCC_ExeOutput*(中构建:DCEF\bin\这就是为什么它对他们有效。。。

也有这个问题。主框架似乎是在框架/窗口可见时首次创建的。但有一个简单的方法可以解决这个问题。只需直接在TChromium对象上调用.Load("about:black"(。这将提前初始化丢失的帧。

相关内容

  • 没有找到相关文章

最新更新