vb.net关闭IE弹出小窗口小技巧
以前用VB6做利用webbrowser控件自动提交网页表单的时候,曾经碰到提交后网页弹出一个提交成功或者失败的提示对话框而无法实现全自动提交的问题,虽然当时改用直接发送post数据解决了这个问题,但是直接post数据在开发难度上比直接模拟表单提交大, 不是很适合于开始开发一些应用比较单一的小程序。
现在换用了VB.NET之后,vb.net中能简单方便的使用多线程给了我解决这个遗留已久的问题提供了思路:现在姑且把提交表单的过程称为主线程,然后在主线程之外建立一条独立的线程,用于关闭提交后弹出的提示对话框。
提交表单的主线程的代码就不详述了,我们把它成为SendForm()过程,下面先看看关闭提示对话框的线程,这个线程的编写思路为:首先通过API函数(FindWindow)查找系统中包含有提示对话框的标题,一般该标题在同一个提交页面中都是固定的,如Microsoft Internet Explorer,然后关闭它,同时线程终止,等待执行提交过程后再次开启线程。还可以通过SendMessage发送一个copy命令获取该提示窗口上的文字。
下面先引用API函数
Private Declare Auto Function FindWindow Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Private Declare Auto Function SendMessage Lib "user32" Alias "SendMessageW" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Const WM_CLOSE = &H10'发送close
Const WM_COPY = &H301'发送copy
下面是关闭提示窗口的CloseForm()过程
Sub CloseForm()
Do Until isClose = True
Dim hWnd As Integer
hWnd = FindWindow(vbNullString, "Microsoft Internet Explorer")
If hWnd <> 0 Then
Call SendMessage(hWnd, WM_COPY, 0, 0)'复制该提示窗口的文字进入剪贴版以供分析
Call SendMessage(hWnd, WM_CLOSE, 0, 0)'发送关闭命令给该提示窗口
isClose = True
Else
t.Sleep(10)
End If
Loop
t.Abort()
End Sub
里面的isclose变量是一个全局变量,用于返回该过程执行结果,以便于在其它的过程中分析窗口的文字。这里只讲述如何关闭提示窗口,其它的过程代码限于时间就不进行进一步的分析了。如果有疑问可以加小编的QQ:570830072询问
- 最新文章
- vb.net入门——热键隐藏和显示窗口[05-23]
- VB.net入门——获取程序运行路径[05-23]
- 在VB.NET中使用新的控件labellink访问网页[05-23]
- 自己做出VB.NET风格的右键菜单[05-23]
- 利用UltraEdit快速将SQL语句转换为符合VB.NET..[05-23]
- 在VS2005中调试WindowsService[05-23]
- 相关文章
- vb.net入门——热键隐藏和显示窗口[05-23]
- VB.net入门——获取程序运行路径[05-23]
- 在VB.NET中使用新的控件labellink访问网页[05-23]
- 自己做出VB.NET风格的右键菜单[05-23]
- 利用UltraEdit快速将SQL语句转换为符合VB.NET..[05-23]
- 怎样在VB.NET中实现窗体控件数据集绑定[05-23]
