我在这里有一个代码但是在按钮上点击一些实例并没有真正最小化或恢复。我尽力而为,但我没有运气。
Private Declare Function ShowWindow Lib "user32.dll" ( _
ByVal hWnd As IntPtr, _
ByVal nCmdShow As Show_Window _
) As Boolean
Private Enum Show_Window As Integer
Hide = 0
ShowNormal = 1
ShowMinimized = 2
ShowMaximized = 3
Maximize = 3
ShowNormalNoActivate = 4
Show = 5
Minimize = 6
ShowMinNoActivate = 7
ShowNoActivate = 8
Restore = 9
ShowDefault = 10
ForceMinimized = 11
End Enum
Private Sub MinimizeAllToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles MinimizeAllToolStripMenuItem.Click
Dim p() As Process = Process.GetProcessesByName("GameServer")
Dim p1() As Process = Process.GetProcessesByName("AccountServer")
Dim p2() As Process = Process.GetProcessesByName("GateServer")
Dim p3() As Process = Process.GetProcessesByName("GroupServer")
Dim p4() As Process = Process.GetProcessesByName("TradeServer")
Dim p5() As Process = Process.GetProcessesByName("FilterServer")
If MinimizeAllToolStripMenuItem.Text = "Minimize All" Then
For Each pr As Process In p
ShowWindow(pr.MainWindowHandle, Show_Window.ForceMinimized)
Next pr
For Each pr As Process In p1
ShowWindow(pr.MainWindowHandle, Show_Window.ForceMinimized)
Next pr
For Each pr As Process In p2
ShowWindow(pr.MainWindowHandle, Show_Window.ForceMinimized)
Next pr
For Each pr As Process In p3
ShowWindow(pr.MainWindowHandle, Show_Window.ForceMinimized)
Next pr
For Each pr As Process In p4
ShowWindow(pr.MainWindowHandle, Show_Window.ForceMinimized)
Next pr
For Each pr As Process In p5
ShowWindow(pr.MainWindowHandle, Show_Window.ForceMinimized)
Next pr
MinimizeAllToolStripMenuItem.Text = "Restore All"
Else
For Each pr As Process In p
ShowWindow(pr.MainWindowHandle, Show_Window.Restore)
Next pr
For Each pr As Process In p1
ShowWindow(pr.MainWindowHandle, Show_Window.Restore)
Next pr
For Each pr As Process In p2
ShowWindow(pr.MainWindowHandle, Show_Window.Restore)
Next pr
For Each pr As Process In p3
ShowWindow(pr.MainWindowHandle, Show_Window.Restore)
Next pr
For Each pr As Process In p4
ShowWindow(pr.MainWindowHandle, Show_Window.Restore)
Next pr
For Each pr As Process In p5
ShowWindow(pr.MainWindowHandle, Show_Window.Restore)
Next pr
MinimizeAllToolStripMenuItem.Text = "Minimize All"
End If
End Sub
可能有什么不对?或者也许有人可以分享您的代码,了解如何最大限度地减少和恢复大量实例的过程。我希望有人可以帮助我。
答案 0 :(得分:2)
真的不确定问题出在哪里,但您可以使用以下内容显着减少代码:
Private Declare Function ShowWindow Lib "user32.dll" (
ByVal hWnd As IntPtr,
ByVal nCmdShow As Show_Window
) As Boolean
Private Enum Show_Window As Integer
Hide = 0
ShowNormal = 1
ShowMinimized = 2
ShowMaximized = 3
Maximize = 3
ShowNormalNoActivate = 4
Show = 5
Minimize = 6
ShowMinNoActivate = 7
ShowNoActivate = 8
Restore = 9
ShowDefault = 10
ForceMinimized = 11
End Enum
Private Sub MinimizeAllToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles MinimizeAllToolStripMenuItem.Click
Dim processes() As String = {"GameServer", "AccountServer", "GateServer", "GroupServer", "TradeServer", "FilterServer"}
Dim cmd As Show_Window = If(MinimizeAllToolStripMenuItem.Text = "Minimize All", Show_Window.Minimize, Show_Window.Restore)
For Each processName As String In processes
For Each pr As Process In Process.GetProcessesByName(processName)
ShowWindow(pr.MainWindowHandle, cmd)
Next
Next
MinimizeAllToolStripMenuItem.Text = If(MinimizeAllToolStripMenuItem.Text = "Restore All", "Minimize All", "Restore All")
End Sub