如何在多线程中使用TWebBrowser?(200)

  • 主题发起人 主题发起人 doll_paul
  • 开始时间 开始时间
D

doll_paul

Unregistered / Unconfirmed
GUEST, unregistred user!
请问,如何在线程中动态建立此Web控件,且不使用Synchronize方法处理。谢谢。希望各位支招。
 
线程中直接创建,不可以吗?还是遇到了什么问题,说出来大家才有讨论的针对性啊。
 
To znxia,你Create(nil)一个,然后Go一个地址,试一下就知道了。呵呵。得不到HTML的。
 
不用Synchronize,调用Navigate函数时,好像Web控件在执行什么等待,这期间如果主程序调用线程中创建的web的Navigate函数,提示请求的资源在使用中,用Synchronize则正常。在Timer中创建的也正常。
 
如果用Synchronize,那就切换到主线程了。我线程就没意义了。现在需求是,每个线程建立自己的Web控件。然后Go。。。。查了不少资料,说是需要把COM接口,散列。。。。。
 
以前我也一直希望解决但都没能解决,持续关注楼主的这个问题
 
TWebBrowser是介面的控件.不可能不用Synchronize.估计你想做搜索之类的程序吧,应该用API方法得到内容,再分析地址.
 
To 41426277,首先谢谢你的回复。其次,如果只是HTTP发个Get,我当然不需要用这Web控件。呵呵~~继续等待提点~~~
 
TWebBrowserThread.Execute;var Msg: TMsg;
begin
Coinitialize(nil);
FWebBrowser := TWebBrowser.Create(nil);
FWebBrowser .ParentWindow := FParentControl.Handle;
FWebBrowser .SetBounds(0, 0, X, Y);
while GetMessage(Msg, 0, 0, 0) and not Terminateddo
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
FWebBrowser.Free;
CoUninitialize;
end;
 
To briankuo,这还是在主线程搞的Web控件。这和在主线程建立它,然后散列给线程没什么区别吧!?其实,我是想知道,不设置Parent,能不能Go页面。希望有完全不需要在主线程建立它的方法。如果实在没有。分给你。万分感谢。多谢。
 
没有的,TWebBrowser 就是完全在线程里面执行,跟主线程没有关系的
 
多人接受答案了。
 
后退
顶部