进程启动并显示C#
我正在使用C#(WPF)进程启动并显示C#,c#,wpf,C#,Wpf,我正在使用C#(WPF) 我有进程的完整路径,我使用process.start()命令启动进程。 现在,我想显示我在启动之前(在start()command之后)启动的进程 i、 e如果我启动记事本,用户将记事本最小化,然后在我的应用程序中单击启动记事本,我想检查我以前是否运行过记事本,如果是,则向用户显示正在运行的记事本。 if p is running: Show p else Start p 我怎样用C#来做呢? 谢谢。在p.Start()调用之后,p.Id将为您提供进
我有进程的完整路径,我使用
process.start()
命令启动进程。
现在,我想显示我在启动之前(在
start()
command之后)启动的进程
i、 e如果我启动记事本,用户将记事本最小化,然后在我的应用程序中单击
启动记事本
,我想检查我以前是否运行过记事本,如果是,则向用户显示正在运行的记事本。if p is running:
Show p
else
Start p
我怎样用C#来做呢?
谢谢。在p.Start()调用之后,p.Id将为您提供进程Id。 稍后,您可以使用Process.GetProcessById(id)查找正在运行的进程 把它的窗口放在前面是一项更复杂的任务。
请参阅检查具有以下名称的进程是否已在运行,您可以使用
process.getProcessByName(processName)
方法
如果进程正在运行,您可以使用Pinvoke
最大化它的窗口。使用SW\u SHOWMAXIMIZED
参数调用ShowWindow
否则,只需调用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);
}
}
为了简化:a)检查一个进程是否已经在运行,并将其主窗口置于最前面;b)如果它没有运行,则启动它。对吗?你拥有目标进程的代码吗?我可以在不最大化窗口的情况下显示应用程序吗?只是为了show@MikeBrown可以,只需将
1
作为第二个参数传递给ShowWindow
函数即可<代码>1对应于SW\u SHOWNORMAL
标志。@MikeBrown很高兴得到帮助。
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);
}
}