敬业的IT人 >> 编程开发 >> .Net技术 >> vb.net关闭IE弹出小窗口小技巧

vb.net关闭IE弹出小窗口小技巧

敬业的IT人 互联网 佚名 2008-5-23 21:17:37

以前用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询问

粤ICP备06119539号
Copyright CiscoSky.Org,Some Rights Reserved.
Email:me1228#tom.com