WebBrowser如何关闭弹出对话框

WebBrowser如何关闭弹出的alert对话框,我找了很久也没有解决办法。我的程序是用delphi写的。有试过几种方法。第一种用WMActivate(varMsg:T... WebBrowser如何关闭弹出的alert对话框,我找了很久也没有解决办法。我的程序是用delphi写的。有试过几种方法。

第一种用 WMActivate(var Msg: TWMActivate); message WM_ACTIVATE; 事件在正常情况下可以自动关闭,但我的程序是运行在系统托盘的,在最小化到托盘后,这个事件就不起作用了。

第二种用 obj.parentWindow.execScript "function showModalDialog(){return;} 类似的方法,网页本页面弹出的对话框可以屏蔽,但我的程序调用了某个ASPX页面,它是提交后返回时弹出对话框的,也不起作用了。

对话框弹出的时候,只有WebBrowser控件不可用,程序还是正常运行的,我就用个 Timer 来 FindWindow('IEFrame',nil) 然后SendMessage关闭事件,但是根本没效果。

程序只差一个功能完工了啊,500高分求解!
~
还有匿名回答啊
可以了,多谢,到这边拿分吧
http://zhidao.baidu.com/question/83500340.html
http://zhidao.baidu.com/question/83092023.html
多任务网页定时刷新器
http://hi.baidu.com/abingpow/blog/item/42cb0fd731bc3ddaa044dffe.html
展开
 我来答
超人影视娱乐
高粉答主

推荐于2017-09-07 · 闲来无事的影评人-关注我把
超人影视娱乐
采纳数:7757 获赞数:60597

向TA提问 私信TA
展开全部

屏蔽alert、confirm、showModalDialog源代码:

lert,confirm函数:
IHTMLWindow2 win = (IHTMLWindow2)hd.Window.DomWindow;
string s = @"function confirm() {";
s += @"return true;";
s += @"}";
s += @"function alert() {}";
win.execScript(s, "javascript");

OK ,大功告成,我们可以继续我们正常的操作拉,比如填写表单并提交:

hd.All["username"].SetAttribute("value","username");
hd.All["password"].SetAttribute("value","password");
hd.All["buttom"].InvokeMember("click");

匿名用户
推荐于2017-09-01
展开全部
在CSDN上有类似的问题,参见http://topic.csdn.net/u/20080313/00/5e2add09-6103-405f-8f6b-6bbb220e9cfd.html

function CallBackProc(H, HMainForm: hwnd): Boolean; stdcall;
var
hChild : hwnd;
begin
Result := True;
if GetParent(H) = HMainForm then begin //可以在这里进一步判断类名,以免关掉其他弹出窗口
hChild := FindWindowEx(H, 0, PChar('Button'), PChar('确定'));
if hChild > 0 then SendMessage(hChild, BM_Click, 0, 0);
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
EnumWindows(@CallBackProc, Self.Handle);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Self.WebBrowser1.Navigate('C:\Documents and Settings\jiaotongju\桌面\test2\test.htm');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Self.Timer1.Enabled := True;//Web页面装载完毕后开启Timer
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Self.Timer1.Enabled := False;
Self.Timer1.Interval:= 100;
end;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gameboy2525
2009-01-21 · TA获得超过242个赞
知道答主
回答量:329
采纳率:0%
帮助的人:133万
展开全部
你可以在VB程序中判断,当新网页打开后,主动退出程序。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
来自百丈寺扬眉吐气的悟空
2009-01-21 · TA获得超过378个赞
知道小有建树答主
回答量:521
采纳率:0%
帮助的人:0
展开全部
在触发navigate事件后, 设置timer检查有没有alert弹出,有的话关闭alert,或者在alert里找到类似OK\确定的按钮然后发送click
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aqzhenghongwei
2009-01-21 · TA获得超过1042个赞
知道小有建树答主
回答量:844
采纳率:0%
帮助的人:0
展开全部
没用过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式