gpt4 book ai didi

delphi网络浏览器从网站复制文本

转载 作者:行者123 更新时间:2023-12-02 03:26:14 25 4
gpt4 key购买 nike

在我的应用程序中,我想将网站中的所有文本复制到字符串变量中。由于 Indy 的一些问题,我想使用网络浏览器组件。

以下代码非常适合我:

procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate('www.tribalwars.nl');
while WebBrowser1.Busy do
Application.ProcessMessages;
Memo1.Lines.Add((WebBrowser1.Document as IHTMLDocument2).body.innerText);
end;

但是,在上面的示例中,我使用了在 Form1 上手动创建的 Web 浏览器。现在我想在运行时创建它。我尝试了以下代码:

procedure TForm1.Button2Click(Sender: TObject);
var Web: TWebBrowser;
begin
Web := TWebBrowser.Create(nil);
Web.Navigate('www.tribalwars.nl');
while Web.Busy do
Application.ProcessMessages;
Memo1.Lines.Add((Web.Document as IHTMLDocument2).body.innerText); //This line raises the error mentioned below
Web.Free;
end;

不幸的是,它不断引发以下错误:

项目 Project1.exe 引发异常类 $C0000005,并显示消息“0x005d9b4f 处的访问冲突:读取地址 0x00000000”。

我想我正在尝试使用尚未创建的东西,或者在那个方向的某个地方。我希望有人能帮助我让它发挥作用!

编辑:whosrdaddy 提到我应该使这个组件可见。我怎样才能做到这一点?我尝试了这个,但它不起作用:

procedure TForm1.Button2Click(Sender: TObject);
var Web: TWebBrowser;
begin
Web := TWebBrowser.Create(nil);
Web.Left := 50;
Web.Top := 50;
Web.Width := 50;
Web.Height := 50;
Web.Visible := True;

Application.ProcessMessages;
Web.Navigate('www.tribalwars.nl');
while Web.Busy do
Application.ProcessMessages;
Memo1.Lines.Add((Web.Document as IHTMLDocument2).body.innerText);
Web.Free;
end;

最佳答案

问题是,当您动态创建 TWebBrowser 并将 NIL 作为所有者传递时,不幸的是父级也是 NIL。需要一个非 NIL 父级来显示任何内容。

通常你会这样做:

变量 pnl浏览器:TPanel; 网页:TWebBrowser;

Web := TWebBrowser.Create(nil);Web.Parent := pnlBrowser;

但是,不幸的是,您也不能(直接)执行此操作(如果尝试,您会收到错误消息“只读属性”)。

但幸运的是,有一种方法可以规避这个问题:

TWinControl(Web).Parent := pnlBrowser;//这工作正常!

我不知道为什么 TWebBrowser 类的父属性是只读的。

还可以阅读 Delphi 文档

TControl(Web).Parent := pnlBrowser;//这也应该有效

作为旁注:

如果您有 TmsMediaPlayer 组件(Microsoft Windows Media Player 的 ActiveX 版本),则使用 Delphi 的 Parent 属性设置父级将停止任何视频播放,但直接通过 Windows API 调用进行设置则不会。

如果您想使用 TWebBrowser 播放视频,动态更改 Parent 属性也可能会停止任何视频播放。如果是这样,值得尝试直接使用 Windows API 调用来更改父级,以避免停止在网络浏览器中播放视频。

关于delphi网络浏览器从网站复制文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35708070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com