今天写聊天服务器程序,需要关闭系统进程。
使用了两种以前使用的方法,一种是调用cmd执行强制关闭命令,另一种是通过C#提供的方法进行关闭
先说第一种
string ProcessName = "explorer";
//
这里换成你需要删除的进程名称
Process[] MyProcess1 = Process.GetProcessesByName(ProcessName);
Process MyProcess = new Process();
//设定程序名
MyProcess.StartInfo.FileName = "cmd.exe";
//
关闭Shell的使用
MyProcess.StartInfo.UseShellExecute = false;
//
重定向标准输入
MyProcess.StartInfo.RedirectStandardInput = true;
//
重定向标准输出
MyProcess.StartInfo.RedirectStandardOutput = true;
//
重定向错误输出
MyProcess.StartInfo.RedirectStandardError = true;
//
设置不显示窗口
MyProcess.StartInfo.CreateNoWindow = true;
//
执行强制结束命令
MyProcess.Start();
MyProcess.StandardInput.WriteLine("ntsd -c q -p"+(MyProcess1[0].Id).ToString());
//
直接结束进程ID
MyProcess.StandardInput.WriteLine("Exit");
第二种,通过强大的进程类进行标准关闭。
string ProcessName = "explorer";//换成想要结束的进程名字
Process[] MyProcess = Process.GetProcessesByName(ProcessName);
MyProcess[0].Kill();
附另外一个例子:
首先,我们用使用Process类,来创建独立的进程,导入System.Diagnostics,
using System.Diagnostics;实例一个Process类,启动一个独立进程Process p = new Process();Process 类有一个 StartInfo 属性,这个是ProcessStartInfo类,包括了一些属性和方法,下面我们用到了他的几个属性:设定程序名p.StartInfo.FileName = "cmd.exe";关闭Shell的使用p.StartInfo.UseShellExecute = false;重定向标准输入p.StartInfo.RedirectStandardInput = true;重定向标准输出p.StartInfo.RedirectStandardOutput = true;重定向错误输出p.StartInfo.RedirectStandardError = true;设置不显示窗口p.StartInfo.CreateNoWindow = true;上面几个属性的设置是比较关键的一步。既然都设置好了那就启动进程吧,p.Start();输入要执行的命令,这里就是ping了,p.StandardInput.WriteLine("ping -n 1 192.192.132.229");p.StandardInput.WriteLine("exit");从输出流获取命令执行结果,string strRst = p.StandardOutput.ReadToEnd();在本机测试得到如下结果:"Microsoft Windows 2000 [Version 5.00.2195]/r/n(C) 版权所有1985-2000 Microsoft Corp./r/n/r/nD://himuraz//csharpproject//ZZ//ConsoleTest//bin//Debug>ping -n 1 192.192.132.231/r/n/r/r/nPinging 192.192.132.231 with 32 bytes of data:/r/r/n/r/r/nReplyfrom 192.192.132.231: bytes=32 time<10ms TTL=128/r/r/n/r/r/nPing statistics for 192.192.132.231:/r/r/n Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),/r/r/nApproximate round triptimes in milli-seconds:/r/r/n Minimum = 0ms, Maximum = 0ms, Average =0ms/r/r/n/r/nD://himuraz//csharpproject//ZZ//ConsoleTest//bin//Debug>exit/r/n"
最后写出我使用的例子(一个很不错的朋友推荐的:hatch Gavin)
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
bool runone=false;
System.Threading.Mutex run = new System.Threading.Mutex(true, "MMWRPG_ChatServer", out runone);
if (runone)
{
run.ReleaseMutex();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MLChatServer());
}
else
{
MessageBox.Show("已经运行了一个实例了。");
}
}
本文介绍了两种使用C#关闭特定进程的方法:一是通过调用cmd命令行并利用ntsd工具结束进程;二是直接使用C#的Process类进行进程终止。此外,还提供了使用Process类执行其他命令(如ping命令)的示例。
1713

被折叠的 条评论
为什么被折叠?



