如何用vb编写程序关闭IE浏览器?

解决方案 »

  1.   

    Option Explicit
    '单击按钮 , 找到所有ie窗口的句柄, 显示在listbox内, 单击listbox关闭所选窗口:
    '一个按钮 , 一个listbox:
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function GetNextWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wFlag As Long) As Long
    Private Const GW_HWNDNEXT = 2
    Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
    Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPrivate Const WM_CLOSE = &H10
    Dim mwnd() As Long
    Private Sub Command1_Click()
        List1.Clear
        Dim k As Long
        k = 0
        Dim mhwnd As Long
        Dim cname As String * 260
        Dim classname As String
        mhwnd = FindWindow("IEFrame", vbNullString)
        ReDim Preserve mwnd(k)
        mwnd(k) = mhwnd
        Dim s As String * 260
        GetWindowText mhwnd, s, 260
        Dim ss As String
        ss = Left(s, InStr(1, s, Chr(0)) - 1)
        ss = "hwnd=" + CStr(mhwnd) + "   标题为:" + ss
        List1.AddItem ss
        If mhwnd <> 0 Then
            Do While mhwnd <> 0
            mhwnd = GetNextWindow(mhwnd, GW_HWNDNEXT)
            GetClassName mhwnd, cname, 260
            classname = Left(cname, InStr(1, cname, Chr(0)) - 1)
            If UCase(classname) = "IEFRAME" Then
                k = k + 1
                ReDim Preserve mwnd(k)
                mwnd(k) = mhwnd
                GetWindowText mhwnd, s, 260
                ss = Left(s, InStr(1, s, Chr(0)) - 1)
                ss = "hwnd=" + CStr(mhwnd) + "   标题为:" + ss
                List1.AddItem ss
            End If
            Loop
         End If
    End SubPrivate Sub List1_Click()
        Dim i As Long
        i = List1.ListIndex
        If mwnd(i) <> 0 Then
            PostMessage mwnd(i), WM_CLOSE, 0&, 0&
            mwnd(i) = 0
        Else
            MsgBox "窗口已经关闭,不用再点击了"
        End If
    End Sub
      

  2.   

    概括地说就是:先用findwindow找到ie的窗口句柄,再用PostMessage函数给窗口发送WM_CLOSE消息
      

  3.   

    添加按钮,文本,文本的text是打开ie的标题名称
    Private Sub CmdEndTask_Click()
        TerminateTask TaskText.Text
    End Sub模块
    Option ExplicitDeclare Function EnumWindows Lib "user32" (ByVal wndenmprc As Long, ByVal lParam As Long) As Long
    Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
    Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Public Const WM_CLOSE = &H10Private Target As String
    ' Check a returned task to see if we should
    ' kill it.
    Public Function EnumCallback(ByVal app_hWnd As Long, ByVal param As Long) As Long
    Dim buf As String * 256
    Dim title As String
    Dim length As Long    ' Get the window's title.
        length = GetWindowText(app_hWnd, buf, Len(buf))
        title = Left$(buf, length)    ' See if this is the target window.
        If InStr(title, Target) <> 0 Then
            ' Kill the window.
            SendMessage app_hWnd, WM_CLOSE, 0, 0
        End If
        
        ' Continue searching.
        EnumCallback = 1
    End Function' Ask Windows for the list of tasks.
    Public Sub TerminateTask(app_name As String)
        Target = app_name
        EnumWindows AddressOf EnumCallback, 0
    End Sub
      

  4.   

    ' 另外一种思路。
    ' 在窗体上放一个CommandButton和一个ListBox。
    ' 启动时ListBox中会显示出所有已打开的IE窗口,选中后单击CommandButton关闭。Option Explicit
    Dim IEWindow As New SHDocVw.ShellWindows
    Dim Browser As New SHDocVw.WebBrowserPrivate Sub Command1_Click()
        Set Browser = IEWindow.Item(List1.ListIndex)
        Browser.Quit
    End SubPrivate Sub Form_Load()
        Dim i As Long
        For i = 0 To IEWindow.Count
            Set Browser = IEWindow.Item(i)
            List1.AddItem Browser.LocationName
        Next i
    End Sub
      

  5.   

    IE好像不能用WM_CLOSE来关闭,用WM_SYSCOMMAND SC_CLOSE来关闭吧
      

  6.   

    http://expert.csdn.net/Expert/topic/2428/2428402.xml?temp=.4794733
      

  7.   

    没有上面各位讲得那么复杂
    引用一下 microsoft internet controls 
    下面是关闭所有IE窗体的代码Dim dWinFolder As New ShellWindows
    Dim eventIE As SHDocVw.InternetExplorer
    Dim objIE As Object
        
        For Each objIE In dWinFolder
            Set eventIE = objIE     '这句前面可以插入一句对IE窗体标题的判断之类的语
                                    '句进行有选择的关闭窗体
            eventIE.Quit
        Next
      

  8.   

    补充一下,我的那段代码里也要在菜单中选工程--引用--选中Microsoft Internet Controls。
      

  9.   

    请问用VB编写的话,完整的代码怎么写,关闭所有打开的IE窗口。
      

  10.   

    我上面给你的代码粘铁到一个按钮的click事件里面,并且在工程中引用microsoft internet controls 就可以在点击按钮的时候关闭所有IE窗口
    引用的操作:
    菜单中选工程--引用--选中Microsoft Internet Controls。