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 展开
第一种用 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 展开
5个回答
展开全部
屏蔽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;
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;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以在VB程序中判断,当新网页打开后,主动退出程序。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在触发navigate事件后, 设置timer检查有没有alert弹出,有的话关闭alert,或者在alert里找到类似OK\确定的按钮然后发送click
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没用过
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询