进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源。进程之间是相对独立的,一个进程无法直接访问另一个进程的数据(除非分布式),一个进程运行的失败也不会影响其他进程的运行,Windows系统就是利用进程把工作划分为多个独立的区域的。
用最简短的话来说,进程就是当前运行的应用程序。运行的应用程序包括exe,dll这两种文件。文件和进程的差别在与,文件是保存在磁盘上的,是静止的,计算机不会去调用文件,而进程是非静止的,正是由于着个原因,所以计算机每调用一个进程就需要一定的资源。这些资源包括内存,虚拟页面,句柄,gdi……
在.net中我门可以用VB.NET Process类,(他位于System.Diagnostics空间中)提供对正在计算机上运行的进程的访问。使用VB.NET Process类,可以获取当前运行的进程的列表,或者启动新的进程。VB.NET Process类用于访问系统进程。初始化VB.NET Process类后,可使用该类来获取有关当前运行的进程的信息。此类信息包括线程集、加载的模块(.dll 和 .exe 文件)和性能信息(如进程当前使用的内存量)。
系统进程在系统上由其进程标识符唯一标识。与许多 Windows 资源一样,进程也由其句柄标识,而句柄在计算机上可能不唯一。句柄是表示资源标识符的一般术语。即使进程已退出,操作系统仍保持进程句柄,该句柄通过 Process 组件的 Handle 属性访问。因此,可以获取进程的管理信息,如 ExitCode(通常,或者为零表示成功,或者为非零错误代码)和 ExitTime。句柄是非常有价值的资源。
Process 类 (System.Diagnostics) | Microsoft Learn
接下来总结一些最近接触到的属性和方法。
属性:
-
ExitCode:退出代码,0表示正常退出,非0表示错误编号,只有通过Process.Start方式启动返回的对象的HasExited属性为true才可以访问ExitCode.
方法:
- ProcessName:获取该进程的名字
- GetCurrentProcess():获取新的 Process 组件并将其与当前活动的进程关联。
- GetProcessesByName(string name):创建新的 Process 组件的数组,并将它们与远程计算机上共享指定进程名称的所有进程资源关联。
- Start方法:启动一个新的进程。可以指定要运行的可执行文件的路径以及需要传递给该进程的命令行参数。
StartInfo
属性:获取或设置一个ProcessStartInfo
对象,用于指定启动进程时的一些设置,例如工作目录、环境变量、输入输出重定向等。StandardInput
、StandardOutput
、StandardError
属性:分别获取标准输入、标准输出和标准错误流。可以使用这些属性来读取和写入进程的输入输出数据。WaitForExit
方法:等待进程退出,并可选择等待的超时时间。在进程退出之前,调用线程将被阻塞。Kill
方法:强制终止正在运行的进程。