【小弟新来,请求帮助】尝试在VB6.0下使用findwindow()遇到的问题
各位老大有礼,小弟初来贵地,有求于各位,感谢您的帮忙。我喜欢把遇到的问题描述的很清楚,有劳各位细看,给予小弟帮助。谢谢。
问题是这样的,我打算用【VB6.0,不是VB.NET】做个程序自动点击网页上的几个按钮,我只想用VB6.0来做。请不要跑题帮我推荐其他了,咱们一个问题一个问题来过关,不跑题,呵呵呵
网页上的按钮分别是
1. 【全选】 2.【删除选中】 3.当按了前面2个按钮后出现一个对话框了,就说“确认删除?”,对话框上是按钮【确认】,和另外一个按钮【取消】
那么我的程序声明部分如下
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
当我点FORM1上的Command3按钮的时候,执行我要的操作
Private Sub Command3_Click()
Dim hwnd As Long
hwnd = 0
WebBrowser1.Document.getelementbyID("Submit").Click '这个是点击按钮【全选】
WebBrowser1.Document.getelementbyID("Delete").Click '这个是点击按钮【删除选中】
Sleep 200
hwnd = FindWindow("#32770", "Microsoft Internet Explorer")
MsgBox hwnd
End Sub
在WebBrowser1加载了网页后,【全选】, 【删除选中】都很顺利,当点击了【删除选中】后,网页就弹出一个对话框(不是新窗口哦)了,要我点【确认】
我用hwnd = FindWindow("#32770", "Microsoft Internet Explorer")语句来取得弹出对话框的句柄,这个时候,突然想先测试一个能不能成功获得句柄
于是。。。我来个一个MsgBox hwnd, 很不幸的。。。hwnd显示为0,意味着没有读取到这个弹出的对话框,既然读取不到那就不能对这个窗口进行操作啦。。。。郁闷
于是,我查啊查啊查查查。。。居然,很雷人的事情出现了
那就是
当我在浏览器世界之窗,也打开这个网页,也点【全选】也点击【删除选中】, 然后世界之窗也弹出了对话框,好了,保持不动
接着,我再执行我的VB的这个程序,点击Command3,居然检测到了hwnd,但是,多次测试后发现,这个hwnd是世界之窗浏览器里面的弹出对话框。。。而不是WebBrowser1里面网页的弹出对话框。
也就是说,hwnd = FindWindow("#32770", "Microsoft Internet Explorer"), 检测不到WebBrowser1这个弹出的对话框啊!但是检测到世界之窗浏览器的弹出对话框去了。。。
我的WebBrowser1和Command3都是同在一个form1上的,我不清楚是不是这个原因。
小弟是个今天开始学习的新新手,求各位能知道怎么办么。
================================下面是一个可能大家会提及的问题==================================================================
hwnd = FindWindow("#32770", "Microsoft Internet Explorer")
这个就不对
你用
(NULL,"Microsoft Internet Explorer")
还有你最好用myspy看看弹出的那个对话框的句柄到底是多少
========================================================
您好,这个是没问题的哦。因为
1. 这个是#32770是类,是我使用SPY++查找出来的;当然,使用vbNullString也正确。但是实际上,无论是使用#32770还是vbNullString, 都是一样的结果,hwnd = 0。
2. 还有一个能证明这个是没问题的。就是我之前说的,这个hwnd = FindWindow("#32770", "Microsoft Internet Explorer") 它最雷人的地方,居然正确无误的找出了世界之窗浏览器里面的那个网页的对话框了, 而不能找出WebBrowser1里面一样的网页弹出的一样的对话框。所以,语句是没问题的。