C# Process类详解

本文仅为个人理解,如有错误请指正,文本进队Process中属性和方法进行解释和说明,红色字体是我总结的注意点。

进程:

进程是操作系统级别的一个基本概念,操作系统就将某个程序加载到内存中时,既包含该程序所需要的资源,同时还对这些资源进行基本的内存边界管理。

Process类:

负责启动和停止本机进程,获取或设置进程优先级,确定进程是否响应,是否已经退出,以及获取系统正在运行的所有进行列表和各进程资源占用情况。也可以查询远城计算机上进程相关信息,包括进程内的线程集合、加载模块(.dll文件和.exe文件)和性能信息(如当前进程使用的内存量)

属性:

  • Id:获取进程ID,也就是任务管理器中PID。

  • ProcessName:进程名称,也就是exe程序的文件名称排除后缀。

  • HasExited:判断进程是否已经退出。

  • ExitCode:退出代码,0表示正常退出,非0表示错误编号,只有通过Process.Start方式启动返回的对象的HasExited属性为true才可以访问ExitCode.

  • ExitTime:退出时间,只有通过Process.Start方式启动返回的对象的HasExited属性为true才可以访问ExitTime。

  • MachineName:获取进程所在的机器名,如果为点,则表示本机。

  • MainModule:获取关联进程的主模块,返回类型为ProcessModule。主模块就是Main函数所在的exe文件。当访问该属性出现Win32Exception异常时,表示32bit进程访问64bit进程模块,通过VS->Properties->Build->General->Platform Target(目标平台)->将Any Cpu或x86设置为x64即可。

  • MainWindowTitle:获取进程的主窗口标题。

  • Modules:获取进程加载的模块,也就是exe文件和dll文件

  • StartInfo:设置或获取应用程序启动时传递的参数。如果为进程为图形用户界面,可以设置StartInfo.WindowStyle属性,指定启动时如何显示窗口,如果进程不是通过Process.Start方式进行启动的,StartInfo属性将不包含启动时使用的参数,使用MainModule属性获取相关启动信息。

  • StartTime:进程启动的时间,可以用来计算进程运行时间。

  • Threads:获取进程中运行的线程,也就是与当前进程关联的所有线程,主线程不一定是索引0的线程.返回类型为ProcessThread集合类型。

  • TotalProcessorTime:获取进程的总的处理器时间,也就是CPU总耗时,是UserProcessorTime和PrivilegedProcessorTime时间之和,并非是程序允许总时间

  • UserProcessorTime:获取进程的用户处理器时间。

  • PrivilegedProcessorTime:获取进程的特权处理器时间。

  • EnableRegisingEvents:是否引发Exited事件,默认为false。

  • Close:释放与进程关联的所有资源,释放资源后无法在访问Process中的属性。

方法和事件:

  • WaitForExit:等待进程退出,可以设置等待超时时间。

  • WaitForInputidle:等待进程进入空闲状态,会只适用于用户图形界面。一般主窗体创建完成才会返回true。可以设置等待超时时间。

  • Kill:强制终止进程,只能对本机应用程序调用该方法,是终止没有图形化界面唯一的方法。由于Kill是异步执行,调用WaitForExit方法等待程序退出或使用HasExited属性判断是否已经退出。
  • CloseMainWindow:通过向进程的主窗口发送关闭消息来关闭进程,其效果与为用户在界面中单击[关闭]按钮效果相同。如果成功发送关闭消息,则返回true,如果关联进程没有主窗口或禁用了主窗口则返回false。
  • Start:启动进程。
  • OnExited:事件,当应用程序退出时会触发该事件,需将EnableRegisingEvents属性设置为true。
  • Process.GetProcesses:获取本地计算机或远程计算机上的所有进程信息,参数machineName:远程主机的IP或计算机名。
  • Process.GetProcessById:根据进程ID获取进程Process对象,machineName:远程计算机的IP或计算名
            
  • Process.GetProcessByName:根据进程名称获取进行数组,machineName:远程计算机的IP或计算名。进程名称就是exe对应的文件名。

 

 

  • 16
    点赞
  • 121
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ProcessC#中一个非常重要的,它表示一个进程,可以用来启动、停止、监视进程。下面是Process的详细介绍: 1. 创建Process对象 可以通过以下方式来创建一个Process对象: ``` Process process = new Process(); ``` 2. 启动进程 可以使用Process的Start方法来启动一个进程。Start方法可以带一个ProcessStartInfo对象作为参数,用于设置进程的启动属性。 ``` ProcessStartInfo startInfo = new ProcessStartInfo("notepad.exe"); Process process = new Process(); process.StartInfo = startInfo; process.Start(); ``` 上述代码将启动一个记事本进程。 3. 停止进程 可以使用Process的Kill方法来强制停止一个进程。 ``` Process process = Process.GetProcessById(processId); process.Kill(); ``` 上述代码将停止一个指定ID的进程。 4. 获取进程信息 可以使用Process的静态方法GetProcesses来获取当前系统上所有正在运行的进程。也可以使用Process的属性和方法来获取指定进程的信息,如ProcessName、MainWindowTitle、StartTime、PrivateMemorySize等。 ``` Process[] processes = Process.GetProcesses(); foreach (Process process in processes) { Console.WriteLine("Process Name: {0} Process ID: {1}", process.ProcessName, process.Id); } ``` 上述代码将获取当前系统上所有正在运行的进程的名称和进程ID,并输出到控制台。 5. 监视进程 可以使用Process的EnableRaisingEvents属性和Exited事件来监视一个进程的结束。 ``` Process process = new Process(); process.EnableRaisingEvents = true; process.Exited += new EventHandler(process_Exited); process.Start(); ``` 上述代码将启动一个进程,并在进程结束时触发process_Exited事件。 以上就是Process的基本用法,可以根据实际需求灵活运用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值