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