可以在没有Application.ProcessMessages的Delphi中的线程中使用TWebBrowser吗?

时间:2013-07-15 15:00:02

标签: delphi delphi-xe2 twebbrowser

我正在尝试使用TWebBrowser在Delphi服务器应用程序(XE2)中创建网页的屏幕截图。屏幕捕获是通过对我的服务器的Web服务调用启动的,因此为了保持可伸缩性,我希望在不依赖关键部分或Application.ProcessMessages进行网页呈现的情况下为请求提供服务。

可以用TWebBrowser完成吗?

2 个答案:

答案 0 :(得分:1)

我已经在很多对象中完成了这个,遗憾的是TWebBrowser对象非常关注它的父对象,特别是它的HWND句柄。 (另见TWebBrowser.HandleNeeded)

我所获得的最好结果是将TWebBrowser和表单封装在ActiveX库中,因此它后面的“消息泵”与主应用程序分离。这样,ActiveX / COM可以处理所有线程和同步问题。

答案 1 :(得分:0)

尝试将TWebbrowser放在一个单独的exe中。这会将其转移到不同的线程/进程,并获得模块化,可伸缩性和性能。 Web服务可以使用IPC或消息传递与具有Web浏览器的进程通信。

使用队列系统跟踪捕获任务的分配和完成到屏幕捕获过程或运行每个站点捕获的exe。

使用此方法的另一个好处是,如果捕获程序崩溃,Web服务仍可用于接收请求。 Web服务可以在分配任务之前检查exe进程是否在内存中,如果没有(崩溃或未启动),它可以自己启动exe。