关于twebbrowser的2个问题(200分)

  • 主题发起人 主题发起人 Raffaello
  • 开始时间 开始时间
R

Raffaello

Unregistered / Unconfirmed
GUEST, unregistred user!
1
procedure TMainForm.WebBrowser1NewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
var
newbrowser:twebbrowser;
newtabsheet:TTabSheet;
begin
newtabsheet:=TTabSheet.Create(nil);
newtabsheet.PageControl:=pagecontrol1;
newbrowser:=twebbrowser.Create(nil);
newtabsheet.InsertControl(newbrowser);
newbrowser.align:=alclient;
newbrowser.onnewwindow2:=webbrowser1.onnewwindow2;
pagecontrol1.ActivePage:=newtabsheet;
ppdisp:=newbrowser.Application;
end;
如果打开的窗口上有用javascript写的关闭窗口按钮,单击会提示could not obtain OLE control window handle.然后只能杀掉该进程,请问该如何解决?
2
如何给每个动态创建的twebbrowser单独写前进,后退,刷新,停止功能?

需要详细一点的代码
 
对于第一个问题,我到是没有实验过。
2、只能单独记录了。我的想法是设定变量什么的,记录每一个窗口是否能够前进、后退…,
刷新的问题就用对象的refush方法呀。
 
去这儿着我源代码,http://delphi.itschem.com/
 
雨人:
1、哪个是你的呀?
2、有支持DH6.0的源码吗?
 
关注!!!第一个问题
 
1.
procedure TForm1.FormCreate(Sender: TObject);
begin
...
>> Application.OnMessage:=ApplicationEvents1Message;
...
end;

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
var
i:integer;
begin
if msg.message=WM_CLOSE then
begin
handled:=true;
for i:=1 to PageControlDB1.PageCount-1 do
begin
if TTabSheetWithBrowser(PageControl1.Pages).Webbrowser.handle=msg.hwnd then
begin
TTabSheetWithBrowser(PageControl1.Pages).Free;
break;
end;
end;
end;
end;

将含webBrowser 的TTabSheet单独建一个类。
destructor TTabSheetWithBrowser.Destroy;
begin
if WebBrowser<>nil then
WebBrowser.Free;
inherited Destroy;
end;
 
后退
顶部