C# 转到已打开的程序

C# 转到已打开的程序,c#,process,C#,Process,我使用此代码检查我的程序是否已打开: string RunningProcess = System.Diagnostics.Process.GetCurrentProcess().ProcessName; System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcessesByName(RunningProcess); if (processes.Length > 1) { return true

我使用此代码检查我的程序是否已打开:

string RunningProcess = System.Diagnostics.Process.GetCurrentProcess().ProcessName;
System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcessesByName(RunningProcess);

if (processes.Length > 1)
{ return true; }

如果程序是开放的,它会把它带到地板上展示。我该怎么办?谢谢。

您必须导入以下方法:

[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hwnd, int nCmdShow);
然后可以通过以下方式调用此方法:

ShowWindow(process.MainWindowHandle, 0);//Hide
ShowWindow(process.MainWindowHandle, 1);//Show
注意:如果窗口最小化,则可以显示该窗口。如果它位于其他窗口的背景中,则不会显示它

如果要显示另一个窗口的背景窗口,则必须导入此方法:

[DllImport("user32.dll")]
static extern bool SetForegroundWindow(IntPtr hWnd);
然后以与ShowWindow相同的方式调用它:

SetForegroundWindow(process.MainWindowHandle);
注意:如果前景窗口未最小化,则只需设置它即可

您还可以将这两种方法与
IsIconic
结合使用,以调用正确的方法:

[DllImport("user32.dll")]
static extern bool IsIconic(IntPtr hWnd);//Returns false if the window is minimized
显示主窗口的完整代码:

static void GotoProcess(Process process)
{
    if (IsIconic(process.MainWindowHandle))
    {
        ShowWindow(process.MainWindowHandle, 1);
    }
    else
    {
        SetForegroundWindow(process.MainWindowHandle);
    }
}

检查这个,我试过了,但不起作用。这是我的代码:System.Diagnostics.Process Process=System.Diagnostics.Process.GetCurrentProcess();ShowWindow(process.MainWindowHandle,1);非常抱歉,我尝试了它,但它不起作用,始终会打开一个新应用程序。如果您不想打开新应用程序,可以使用
GotoProcess
转到已打开的应用程序,然后关闭新应用程序。当你打开一个新的应用程序时,你必须检查这个。