Delphi WebBrowser如何获取TThread对象中的所有链接?

2026-04-10 18:052阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计367个文字,预计阅读时间需要2分钟。

Delphi WebBrowser如何获取TThread对象中的所有链接?

在`tthread`对象中执行代码时遇到问题。若网址包含http://www.ebay.com/itm/,应通过`twebbrowser`的所有链接进行操作,并将其复制到剪贴板。代码在`mainform`中运行良好,但在`tthread`对象中无法正常工作。

我在tthread对象中运行代码时遇到问题.如果网址包含“www.ebay.com/itm/”,它应该通过twebbrowser中的所有链接然后将其复制到备忘录中.代码在mainform中完美运行,但在tthread对象中不起作用.

我的代码:

begin count := 0; loop := 0; repeat link := Webbrowser1.OleObject.Document.Links.Item(loop).href; if AnsiContainsStr(link, 'www.ebay.com/itm/') then begin Form1.Memo1.Lines.Add(link); end; end; loop := loop + 1; count := count + 1; until count = Webbrowser1.OleObject.Document.links.Length; end;

我得到的错误

Access violation at address xxxxxx in module mshtml.dll

感谢阅读和所有回复.

您的控件仍然具有GUI线程的无限性.因此,您无法从工作线程访问它.

Delphi WebBrowser如何获取TThread对象中的所有链接?

您只需稍微调整线程设计即可实现此功能.处理页面的源代码以拉出GUI线程中的所有链接.这必须在那里完成,你别无选择.但是然后让工作线程进行链接的继续处理.我假设真正的应用程序更多的链接,而不是把它们放在备忘录中!

你应该有一个简单的生产者/消费者设计. GUI线程生成链接列表.工作线程消耗它们.线程安全队列将允许您在线程之间同步任务.并且您可能会受益于使用像OTL这样的更高级别的库而不是编写原始线程.

本文共计367个文字,预计阅读时间需要2分钟。

Delphi WebBrowser如何获取TThread对象中的所有链接?

在`tthread`对象中执行代码时遇到问题。若网址包含http://www.ebay.com/itm/,应通过`twebbrowser`的所有链接进行操作,并将其复制到剪贴板。代码在`mainform`中运行良好,但在`tthread`对象中无法正常工作。

我在tthread对象中运行代码时遇到问题.如果网址包含“www.ebay.com/itm/”,它应该通过twebbrowser中的所有链接然后将其复制到备忘录中.代码在mainform中完美运行,但在tthread对象中不起作用.

我的代码:

begin count := 0; loop := 0; repeat link := Webbrowser1.OleObject.Document.Links.Item(loop).href; if AnsiContainsStr(link, 'www.ebay.com/itm/') then begin Form1.Memo1.Lines.Add(link); end; end; loop := loop + 1; count := count + 1; until count = Webbrowser1.OleObject.Document.links.Length; end;

我得到的错误

Access violation at address xxxxxx in module mshtml.dll

感谢阅读和所有回复.

您的控件仍然具有GUI线程的无限性.因此,您无法从工作线程访问它.

Delphi WebBrowser如何获取TThread对象中的所有链接?

您只需稍微调整线程设计即可实现此功能.处理页面的源代码以拉出GUI线程中的所有链接.这必须在那里完成,你别无选择.但是然后让工作线程进行链接的继续处理.我假设真正的应用程序更多的链接,而不是把它们放在备忘录中!

你应该有一个简单的生产者/消费者设计. GUI线程生成链接列表.工作线程消耗它们.线程安全队列将允许您在线程之间同步任务.并且您可能会受益于使用像OTL这样的更高级别的库而不是编写原始线程.