如何向WebBrowser1加载的网页模拟对话框“确定”点击?
用WebBrowser加载一个网页:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>无标题页</title>
</head>
<body>
<script language="javascript">
alert("OK");
</script>
</body>
</html>
这个网页加载后会弹出一个“确定”的对话框。
我在VB6中这样写代码:
Private Sub Command5_Click()
Timer1.Interval=1000
Timer1.Enabled = True
WebBrowser1.Navigate App.Path & "\page.htm"
End Sub
Private Sub Timer1_Timer()
Debug.Print "SendKey"
SendKeys "{ENTER}"
Debug.Print "EndKey"
Timer1.Enabled = False
End Sub
目的是想当网页被加载,网页的对话框弹出后,程序能模拟人点击Webbrowser1中网页中的“确定”按钮。但是我发现,当
WebBrowser1.Navigate App.Path & "\page.htm"一句执行后,只有当人为点击的网页弹出的对话框(Javascript中的alert函数)中的“确定”时,Timer1_Timer的代码才被执行。
那么怎么才能用WebBrowser加载一个有弹出提示框的网页后,能让程序模拟实现“确定”点击?
[最优解释]
用FindWindow找到Microsoft Internet Explorer子窗口
然后 用:GetParent找到这个窗口的父窗口
再用GetWindowText找到父窗口的字符串
判断是否是自己主程序的窗口
如果是
SendMessage(WM_CLOSE)
[其他解释]
你说的这些我都想过,但问题是:你把这些代码放在哪执行呢?
放在:WebBrowser1.Navigate App.Path & "\page.htm"前面,它还没弹出那个alert提示
放在后面,你不点Javascript的alert的确定,后面的代码就不会去执行!
[其他解释]
除非放在另一个EXE程序中,但那样很难同步SendMessage的时机
[其他解释]
参考这里
[其他解释]
我本以为用Timer,可以相当于是新启一个线程,没想到Timer中的代码也要等javascript的alert被点“确定”后才能被执行……
[其他解释]
这里
[其他解释]
好的,研究下先
[其他解释]
这里有3种
[其他解释]
这个不知道可以不可以
[其他解释]
你很NB,不愧是专家!
