如何通过vb.net最小化已经打开的IE浏览器?

时间:2016-09-07 04:24:24

标签: vb.net

我需要知道如何使用vb.net最小化已经打开的Internet Explorer浏览器。在任何地方我只能找到最小化表单的代码而不是Web浏览器。任何帮助将不胜感激。提前致谢。

1 个答案:

答案 0 :(得分:1)

这是怎么做的。但请记住这是WindowsAPI。你应该阅读,并在做任何严肃的事情之前了解更多。

Imports System.Runtime.InteropServices

Public Class Form1

    <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)>
    Private Shared Function ShowWindow(ByVal hwnd As IntPtr, ByVal nCmdShow As ShowWindowCommands) As Boolean
    End Function

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim hWnd As Long = Process.GetProcessesByName("iexplore").First().MainWindowHandle

        ShowWindow(hWnd, ShowWindowCommands.ForceMinimize)

    End Sub

    Enum ShowWindowCommands As Integer
        Hide = 0
        Normal = 1
        ShowMinimized = 2
        Maximize = 3
        ShowMaximized = 3
        ShowNoActivate = 4
        Show = 5
        Minimize = 6
        ShowMinNoActive = 7
        ShowNA = 8
        Restore = 9
        ShowDefault = 10
        ForceMinimize = 11
    End Enum
End Class

我会解释。

第一行中的导入需要使用DllImport,后面将使用它。以<DllImport开头的代码行...从user32.dll导入函数。由于我们将使用外部应用程序,因此我们从Windows提供的一组服务(Windows提供的服务)中获得支持来管理它。

我们使用的功能具有最小化,最大化,隐藏或恢复外部窗口的功能。可能的替代方案列在代码末尾的Enum中。 pinvoke.net很好地列出了他们的所作所为,如果你需要偷看的话。

此代码只需指定一个按钮点击即可完成所有工作,但当然,这是一个示例,您应该根据需要进行更改。

然后,我们为Internet Explorer获取了我们需要的流程,此处为iexplore。您可以在任务管理器中找到它,或在命令提示符中找到tasklist命令。但是在没有.exe部分的情况下使用它。当我们获得该过程时,我们会收到一个列表:当然,iexplore的多个实例可能正在运行!我提取了第一个。 (但要小心,如果没有iexplore正在运行,它将抛出一个错误 - 处理它。)

然后,获取主窗口的句柄What is a handle, btw?

使用ShowWindow(hWnd, ShowWindowCommands.ForceMinimize)最小化使用API​​的Internet Explorer。 (我不得不强迫。它不适用于Minimize = 6值。)

了解更多here on pinvokehere on MSDN

修改
我的天啊! Internet Explorer是多进程的! 而不是最小化第一个,最小化它们! 将Button1_Click内的代码更改为:

For Each p In Process.GetProcessesByName("iexplore")
    ' Since Internet Explorer always has its name in the title bar,
    If p.MainWindowTitle.Contains("Internet Explorer") Then
        Dim hWnd As Long = p.MainWindowHandle
        ShowWindow(hWnd, ShowWindowCommands.ForceMinimize)
    End If
Next