转到已打开的程序

时间:2016-05-08 06:22:45

标签: c# process

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

Nelder-Mead

如果程序打开,它会把它带到场上并显示出来。我能怎么做?谢谢。

1 个答案:

答案 0 :(得分:2)

您必须导入以下方法:

[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);
    }
}