2016-09-07 98 views

回答

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 API提供的支持来管理这些服务。

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

该代码只是简单地指定一个按钮点击完成所有工作,但当然,这是一个例子,您应该根据需要更改它。

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

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

使用ShowWindow(hWnd, ShowWindowCommands.ForceMinimize)可以最大限度地减少带有API的Internet Explorer。 (。我不得不强迫它没有与Minimize = 6值工作)

更多here on pinvokehere on MSDN

编辑:
OMG! 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 
+0

thanx的快速反应Wickramaranga并为代码的详细说明:)但它并没有减少我的IE浏览器:( – anonymous21

+0

@ anonymous21编辑 – Wickramaranga

+0

它的工作原理谢谢! ) – anonymous21