使用 Delphi 在运行时创建 TWebBrowser

发布于 2024-08-15 20:26:25 字数 558 浏览 9 评论 0原文

我有一个 TWebBrowser 对象,它是在运行时创建并在后台使用的,即不可见。问题是像 OnDocumentComplete 这样的事件在 Delphi2009 中不起作用或不会被触发。有什么建议吗?

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  FWebBrowser:= TWebBrowser.Create(Self);
  FWebBrowser.RegisterAsBrowser:= True;
  FWebBrowser.OnDocumentComplete:= WhenDocIsCompleted;
end;

procedure TfrmMain.WhenDocIsCompleted(ASender: TObject; const pDisp: IDispatch;
  var URL: OleVariant);
begin
  ShowMessage('Doc is completed!');
end;

Navigate 和 Navigate2 之间有什么重要的区别吗?我怎样才能在这里启用cookies?

提前致谢。

I have a TWebBrowser object which is created in runtime and used in background, that is, not visible. The problem is that events like OnDocumentComplete dont work or are not triggered in Delphi2009. Any advice?

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  FWebBrowser:= TWebBrowser.Create(Self);
  FWebBrowser.RegisterAsBrowser:= True;
  FWebBrowser.OnDocumentComplete:= WhenDocIsCompleted;
end;

procedure TfrmMain.WhenDocIsCompleted(ASender: TObject; const pDisp: IDispatch;
  var URL: OleVariant);
begin
  ShowMessage('Doc is completed!');
end;

There is any difference important between Navigate and Navigate2? How can I enable cookies here?

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

风情万种。 2024-08-22 20:26:25
TWinControl(FWebBrowser).Parent := Form1;  // Parent property is read-only unless cast
TWinControl(FWebBrowser).Parent := Form1;  // Parent property is read-only unless cast
陪你搞怪i 2024-08-22 20:26:25

您可能会遇到此问题,因为 TWebBrowser 在内部与父窗体的句柄紧密配合以获取从窗口发布的消息。尝试在 TWebBrowser 打开时使用隐藏表单(也可以选择运行时创建),和/或调查 HandleAllocation 和 HandleNeeded 方法是否可以帮助您。

You may have this issue because the TWebBrowser internally works closely together with the handle of the parent form to get messages posted from windows. Try using a hidden form with the TWebBrowser on (optionally run-time created as well), and/or investigate if the HandleAllocated and HandleNeeded methods could help you.

静若繁花 2024-08-22 20:26:25

调用 OnDocumentComplete 问题:

WebBrowser1.HandleNeeded;

或者在您的情况下:

FWebBrowser.HandleNeeded;

在 webBrowser.Navigate 之前

Call for the OnDocumentComplete Problem:

WebBrowser1.HandleNeeded;

or in your case:

FWebBrowser.HandleNeeded;

before webBrowser.Navigate

旧时浪漫 2024-08-22 20:26:25

与网页 cookie 完美配合的组件是来自 EmbeddedWB 的 TEmbeddedWB,并且是免费的。

A component working perfectly with web-pages cookies is TEmbeddedWB from EmbeddedWB and is free.

少女七分熟 2024-08-22 20:26:25
procedure TForm1.ReCreateBrowser();
begin
    if(WebBrowser <> NIL) then
    begin
       WebBrowser.Stop;
       WebBrowser.Destroy;
    end;

    WebBrowser        := TWebBrowser.Create(Form1);
    TWinControl(WebBrowser).Name   := 'WebBrowser';
    TWinControl(WebBrowser).Parent := Form1; //set parent...can be panel, tabs etc
    WebBrowser.Silent := true;  //don't show JS errors
    WebBrowser.Visible:= true;  //visible...by default true

    //don't set width/heigh/top/left before TWinControl(WebBrowser).Parent := Form1;
    WebBrowser.Top    := 10;
    WebBrowser.Left   := 10;
    WebBrowser.Height := 600;
    WebBrowser.Width  := 800;
    WebBrowser.OnDocumentComplete  := WebBrowserDocumentComplete;
  //WebBrowser.OnNavigateComplete2 := WebBrowserNavigateComplete2;
end;
procedure TForm1.ReCreateBrowser();
begin
    if(WebBrowser <> NIL) then
    begin
       WebBrowser.Stop;
       WebBrowser.Destroy;
    end;

    WebBrowser        := TWebBrowser.Create(Form1);
    TWinControl(WebBrowser).Name   := 'WebBrowser';
    TWinControl(WebBrowser).Parent := Form1; //set parent...can be panel, tabs etc
    WebBrowser.Silent := true;  //don't show JS errors
    WebBrowser.Visible:= true;  //visible...by default true

    //don't set width/heigh/top/left before TWinControl(WebBrowser).Parent := Form1;
    WebBrowser.Top    := 10;
    WebBrowser.Left   := 10;
    WebBrowser.Height := 600;
    WebBrowser.Width  := 800;
    WebBrowser.OnDocumentComplete  := WebBrowserDocumentComplete;
  //WebBrowser.OnNavigateComplete2 := WebBrowserNavigateComplete2;
end;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文