一、概述
一个Process组件提供了在计算机运行进程的访问权限。>
属性
- Id >ProcessName 获取该进程的名称。MachineName 获取关联进程正在其上运行的计算机的名称。SessionId 获取关联进程的终端服务会话标识符。StandardError 获取用于读取应用程序错误输出的流。StandardInput 获取用于写入应用程序输入的流。StandardOutput 获取用于读取应用程序文本输出的流。StartInfo 获取或设置要传递给 Process 的 Start() 方法的属性。StartTime 获取关联进程启动的时间。Threads 获取在关联进程中运行的一组线程。Handle 获取关联进程的本机句柄。MainWindowHandle 获取关联进程主窗口的窗口句柄。MainWindowTitle 获取进程的主窗口标题。 MainModule 获取关联进程的主模块。Modules 获取已由关联进程加载的模块。
方法
- GetCurrentProcess() >GetProcessById(Int32) 返回新的 Process 组件(给定本地计算机上某个进程的标识符)。GetProcesses() 为本地计算机上的每个进程资源创建一个新的 Process 组件。GetProcessesByName(String) 创建新的 Process 组件的数组,并将它们与本地计算机上共享指定的进程名称的所有进程资源关联。Kill() 立即停止关联的进程。Start() 启动(或重用)此 Process 组件的 StartInfo 属性指定的进程资源,并将其与该组件关联。WaitForExit(Int32) 指示 Process 组件在指定的毫秒数内等待关联进程退出。
二、使用方法
1、建立和销毁进程>
System.Diagnostics.Process p=Process.Start("notepad.exe","File.txt");
Thread.Sleep(2000);
p.Kill();
2、后台运行进程:
ProcessStartInfo psi = new ProcessStartInfo("cmd.exe");
psi.Arguments = @"/c copy c:1.txt lpt1";
psi.CreateNoWindow = true;
psi.UseShellExecute = false;//默认为true, 使用外壳程序启动进程。否则,直接从可执行文件创建进程。
Process p = Process.Start(psi);
if (!p.WaitForExit(1000 * 7))//启动外部程序,等待其退出
{
p.Kill();
}
p.Close();
或者
ProcessStartInfo psi = new ProcessStartInfo("cmd.exe");//FileName
psi.RedirectStandardInput = true;
psi.RedirectStandardOutput = true;
psi.CreateNoWindow = true;//将此属性设置为false,就能重定向进程。。。
psi.UseShellExecute = false;//
Process p = Process.Start(psi);
StreamWriter sw = p.StandardInput;
StreamReader sr = p.StandardOutput;
sw.WriteLine(@"/c copy c:1.txt lpt1");
sw.Close();
Console.Write(sr.ReadToEnd());
sr.Close();
p.Close();
3、启动外部程序
System.Diagnostics.Process.Start("explorer.exe", @"c:/"); //用资源管理器打开C:/
System.Diagnostics.Process.Start("rundll32.exe", @"shell32.dll,Control_RunDLL appwiz.cpl,,0");//打开“添加或删除程序”的面板:
4、列举计算机中运行中的进程
var pList = Process.GetProcesses().OrderBy(x => x.Id).Take(10);
foreach (var p in pList)
{
Console.WriteLine(string.Format("ProcessID is {0} t ProcessName is {1}", p.Id, p.ProcessName));
}
5、获取进程中的多个模块
var mList = Process.GetCurrentProcess().Modules;
foreach (ProcessModule m in mList)
{
Console.WriteLine(string.Format("ModuleName is {0} t ModuleURL is {1} t ModuleVersion is {2}", m.ModuleName, m.FileName, m.FileVersionInfo.FileVersion));
}
到此这篇关于C#操作windows系统进程的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持易采站长站。










