高手请进来拍我二砖!!一个关于webbrowser的问题!!讨论者都有分!!!
想写个多页浏览器,可是遇到一个问题,常访问一些网站时候会出现
Could not obtain OLE control window handle 错误,而且访问www.sina.com.cn时候最容易出现这个问题
用webbrowser控件访问www.sina.com.cn的时候先访问该网页的主页面然后在响应NewWindow2(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool);事件访问一个广告,过一小段时间以后又响应NewWindow2(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool);事件,访问ttp://uil.sina.com.cn/c/timelog/log_start.cgi?channel=news页面,问题就出现在这里该页面是一个具有自动关闭功能的弹出页面这时我的WEBBROWSER控件就消失了,接着出现Could not obtain OLE control window handle 错误!
如何能防止这样的自动关闭功能的弹出页面联接使程序出错呢!请告示解答!
简单的源代码:
--------------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, OleCtrls, SHDocVw;
type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
Edit1: TEdit;
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure WebBrowser1NewWindow2(Sender: TObject; var ppDisp: IDispatch;
var Cancel: WordBool);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=13 then
WebBrowser1.Navigate(Edit1.Text);
end;
procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
begin
ppDisp:= WebBrowser1.Application;
end;
end.