WebBrowser如何关闭弹出对话框

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebBrowser如何关闭弹出对话框相关的知识,希望对你有一定的参考价值。

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

屏蔽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");

参考技术A 在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;本回答被提问者采纳
参考技术B 你可以在VB程序中判断,当新网页打开后,主动退出程序。 参考技术C 在触发navigate事件后, 设置timer检查有没有alert弹出,有的话关闭alert,或者在alert里找到类似OK\确定的按钮然后发送click 参考技术D 没用过

Delphi 获得Webbrowser弹出对话框的信息

使用Webbrowser打开一个网页,点击提交按钮的时候会出现提示框
比如提示"输入信息错误,请核对后重新输入!",怎么才能获得这个弹出的对话框信息呢?获得信息保存在Memo中,最后再自动关闭这个弹出的对话框.
代码如何编写,请会的朋友说一下
brapple :
是否能具体说明一下呢?或贴出些代码,

参考技术A WebBrowser 有相应的事件。可以判断所需的事件,然后对Sender对象进行转换和具体的操作。

以上是关于WebBrowser如何关闭弹出对话框的主要内容,如果未能解决你的问题,请参考以下文章

c# webBrowser如何获取弹出提示框内容并模拟点击?

WPF WebBrowser抑制Suppress 弹出 脚本错误 对话框 但是样式改变 需要继续改善

如何监听弹出对话框的关闭事件

asp网页中,如何实现点击按钮弹出对话框,然后点击“确定”关闭窗口,点击“取消”返回?尽快,非常感谢!

.NET winform 弹出对话框,如何传递参数并且在关闭对话框时返回值?

VB如何实现执行某程序,弹出对话框选择是不是要执行,点击是则执行,否则不执行