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
转到已打开的应用程序,然后关闭新应用程序。当你打开一个新的应用程序时,你必须检查这个。