Vb.net 如何使用大量实例最小化和恢复过程?
我这里有一个代码,但在点击按钮时,一些实例并没有真正最小化或恢复。我尽了我所能,但运气不好Vb.net 如何使用大量实例最小化和恢复过程?,vb.net,instance,restore,minimize,Vb.net,Instance,Restore,Minimize,我这里有一个代码,但在点击按钮时,一些实例并没有真正最小化或恢复。我尽了我所能,但运气不好 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 ShowM
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
有什么不对劲吗?或者,也许有人可以分享您的代码,告诉您如何最小化和恢复具有大量实例的过程。我希望有人能帮助我。我真的不确定问题出在哪里,但您可以使用以下方法大幅减少代码:
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
你能提供一些关于问题的更多细节吗?您是否可以发布可以自行编译的工作代码?这将帮助我们进行诊断。您好@kdbanman,这段代码正在运行,编译过程中没有错误。问题是,每当我按下那个按钮,有时一些实例不去最小化,有时不去恢复。谢谢你的优化,但我不太确定程序可能在哪里。只是为了一个想法,我使用了你的代码,之前我也在这段代码中使用过,这段代码保存着那些服务器。