c# - 进程启动并显示 C#

标签 c# wpf

我正在使用 C# (WPF)
我有进程的完整路径,我使用 Process.Start() 命令启动进程。

Process p = new Process();
p.shartInfo.FileName = fullPathOfFile;
p.Start();

现在,我想显示我之前启动的进程(在 Start() 命令之后)。

即,如果我启动记事本并且用户最小化记事本并单击应用程序中的启动记事本,我想检查我之前是否运行过记事本,如果是,则向用户显示正在运行的记事本。

if p is running:
   Show p
else
   Start p


我怎样才能在 C# 中做到这一点?
谢谢。

最佳答案

要检查具有以下名称的进程是否已在运行,您可以使用 Process.GetProcessesByName(processName)方法。

如果进程正在运行,您可以使用 Pinvoke 最大化其窗口。调用ShowWindowSW_SHOWMAXIMIZED参数。

否则您可以直接调用Process.Start(processName)启动一个进程。 尝试以下操作

internal class MyClass
{
  //use this flag to maximize process window.
  const int SW_SHOWMAXIMIZED = 3;
  //use this flag to open process window normally.
  const int SW_SHOWNORMAL = 1;

  [DllImport("user32.dll")]
  static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

  public static void Main(string[] args)
  {
    var processName = "notepad";
    var process = Process.GetProcessesByName(processName).FirstOrDefault();
    if (process != null)
      ShowWindow(process.MainWindowHandle, SW_SHOWNORMAL);
    else
      Process.Start(processName);
  }
}

关于c# - 进程启动并显示 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35286694/

相关文章:

c# - 在 .NET 中比较两种 RGB 颜色的最快方法是什么?

c# - Application.Current.MainWindow 与 Window.GetWindow(this)

WPF:绑定(bind),条件属性 setter

wpf - 闪烁的文本 block

c# - C#中异步调用方法

c# - 为什么这个带有参数化 sql 的 C# 数据库应用程序不能工作?

c# - 名称 'html' 也不存在于用户控件 MVC 和 C# 的当前上下文中的名称 'model'

c# - 如何在 C# 中将日期与 'T' 转换为字符串/从字符串转换

c# - 如何将表达式 Func<T, object[]> 转换为 Func<T, object>

wpf - 获取 ViewModel 中的 TextBox 值