综 合 性 实 验
实 验 名 称:关闭标题包含指定字符的所有窗口 专 业 班 级: 学 生 姓 名:
学 号:
指 导 教 师:
1 需求分析:
关闭标题包含指定字符的所有窗口,使我们能更方便的关闭很多窗口,避免了一个一个关闭的麻烦
2 运行环境:
WINDOWS XP系统;VB6.0; 3开发工具和编程语言
Visual Basic6.0语言; 4 系统设置:
下例程序运行后,单击按钮关闭标题包含“记事本”的所有窗口
\'在窗体上放置 3 个控件,所有控件无需设置任何属性,全部采用默认设置: \' Command1,Label1,Text1
Private Declare Function FindWindowEx Lib \"user32\" Alias \"FindWindowExA\" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Private Declare Function PostMeage Lib \"user32\" Alias \"PostMeageA\" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Private Declare Function GetWindowText Lib \"user32\" Alias \"GetWindowTextA\" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long Private Sub Form_Load() \'设置控件初始状态,实际可以在窗体设计阶段完成 Dim S As Single
Me.Caption = \"关闭指定窗口\": Text1.Text = \"记事本\" Label1.AutoSize = True: Label1.Caption = \"窗口标题包含的字符:\" Command1.Caption = \"关闭指定窗口\"
S = Label1.Height Label1.Move S, S Text1.Move S + Label1.Width, S * 0.5, S * 8, S * 2 Command1.Move S, S * 3, S * 8, S * 2 End Sub
Private Sub Command1_Click() Dim hWnds As Long, nCap As String, nFind As String Dim S As Long, S1 As Long, nLong() As Long, nCount As Long
S = 255: nFind = Text1.Text Do hWnds = FindWindowEx(0, hWnds, vbNullString, vbNullString) If hWnds = 0 Then Exit Do nCap = String(S + 1, \" \") GetWindowText hWnds, nCap, S S1 = InStr(nCap, Chr(0)) If S1 > 0 Then nCap = Left(nCap, S1 - 1) If InStr(nCap, nFind) > 0 Then \' PostMeage hWnds, &H10, 0, 0 \'不在这里发送关闭消息,是为了防止漏查 nCount = nCount + 1 ReDim Preserve nLong(1 To nCount) nLong(nCount) = hWnds End If Loop
For S = 1 To nCount PostMeage nLong(S), &H10, 0, 0 \'发送关闭窗口消息 DoEvents Next End Sub 5参考文献:
龚培增,杨志强Visual Basic程序设计教程(