2015-10-27 31 views
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 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

你可以包含什么地方出了错一些更多的细节?你有可能发布自己编译的工作代码吗?这将有助于我们诊断。 – kdbanman

+0

你好@kdbanman,这段代码正在工作,它的编译没有错误。问题是,每当我按下按钮,有时一些实例不会最小化,有时不会恢复。 – Foxseiz

回答

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 
+0

感谢您的优化,但我不太确定程序可以在哪里。只是为了一个想法,我使用你的代码之前我用这个代码以及那些服务器。 http://www.experts-exchange.com/questions/28736752/VB-net-Auto-Restart-Application.html – Foxseiz

相关问题