//System.Diagnostics.Process p = new System.Diagnostics.Process(); //p.StartInfo.FileName = @"C:Program Files (x86)TencentWeChatWeChat.exe"; //p.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动 //p.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息 //p.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息 //p.StartInfo.RedirectStandardError = true;//重定向标准错误输出 //p.StartInfo.CreateNoWindow = true;//不显示程序窗口 //p.Start();//启动程 Process[] processes = Process.GetProcesses(); foreach (Process item in Process.GetProcesses()) { if (item.ProcessName.Contains("WeChat")) { item.StartInfo.FileName = @"C:Program Files (x86)TencentWeChatWeChat.exe"; item.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动 item.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息 item.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息 item.StartInfo.RedirectStandardError = true;//重定向标准错误输出 item.StartInfo.CreateNoWindow = true;//不显示程序窗口 item.Start();//启动程序 } }
启动
private void StartQueueExe() { string filePath = AppDomain.CurrentDomain.BaseDirectory; FileInfo file = new FileInfo(filePath); //filePath = file.Directory.Parent.Parent.FullName + "\ZB.QueueSystem\ZB.QueueSystem.exe"; filePath = file.Directory.FullName + "\ZB.QueueSystem\ZB.QueueSystem.exe"; System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo.FileName = filePath; p.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动 p.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息 p.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息 p.StartInfo.RedirectStandardError = true;//重定向标准错误输出 p.StartInfo.CreateNoWindow = true;//不显示程序窗口 p.Start();//启动程序 }
停止
private void KillProcessExists() { Process[] processes = Process.GetProcessesByName("AppStart"); foreach (Process p in processes) { if (System.IO.Path.Combine(Application.StartupPath, "AppStart.exe") == p.MainModule.FileName) { p.Kill(); p.Close(); } } }
/// <summary>
/// 关闭进程
/// </summary>
/// <param name="processName">进程名</param>
private void KillProcess(string processName)
{
Process[] myproc = Process.GetProcesses();
foreach (Process item in myproc)
{
if (item.ProcessName == processName)
{
item.Kill();
}
}
}
查看是否存在指定进程:
private bool CheckProcessExists() { Process[] processes = Process.GetProcessesByName("test"); foreach (Process p in processes) { if (System.IO.Path.Combine(Application.StartupPath, "test.exe") == p.MainModule.FileName) return true; } return false; }