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。
exitedClose:释放与进程关联的所有资源,释放资源后⽆法在访问Process中的属性。
⽅法和事件:
WaitForExit:等待进程退出,可以设置等待超时时间。
WaitForInputidle:等待进程进⼊空闲状态,会只适⽤于⽤户图形界⾯。⼀般主窗体创建完成才会返回t
rue。可以设置等待超时时间。
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对应的⽂件名。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论