创建新的 Process 组件的数组,并将它们与本地计算机上共享指定的进程名称的所有进程资源关联。
命名空间: System.Diagnostics
程序集: System(在 System.dll 中)
Public Shared Function GetProcessesByName ( _ processName As String _ ) As Process()
Dim processName As String Dim returnValue As Process() returnValue = Process.GetProcessesByName(processName)
public static Process[] GetProcessesByName( string processName )
public: static array<Process^>^ GetProcessesByName( String^ processName )
public static Process[] GetProcessesByName( String processName )
public static function GetProcessesByName( processName : String ) : Process[]
参数
- processName
- 类型:System..::.String
该进程的友好名称。
异常 | 条件 |
---|---|
InvalidOperationException |
当访问用于获取进程信息的性能计数器 API 时有问题。此异常特定于 Windows NT、Windows 2000 和 Windows XP。 |
使用此方法创建新的 Process 组件的数组,并将它们与本地计算机上运行同一可执行文件的所有进程资源关联。该进程资源必须已经存在于计算机上,因为 GetProcessesByName 不创建系统资源,而是将其与应用程序生成的 Process 组件关联。可以为当前不在本地计算机上运行的可执行文件指定 processName,因此该方法返回的数组可以为空。
该进程名是不包括 .exe 扩展名或路径的进程友好名称,如 Outlook。GetProcessesByName 对于获取和操作与同一可执行文件关联的所有进程非常有用。例如,可以将可执行文件名作为 processName 参数传递,以便关闭该可执行文件的所有运行中的实例。
虽然进程 Id 对于系统上的单个进程资源是唯一的,但是本地计算机上的多个进程可以运行由 processName 参数指定的应用程序。因此,GetProcessById 最多返回一个进程,但 GetProcessesByName 返回包含所有关联进程的数组。如果需要使用标准 API 调用操作进程,则可以依次查询这些进程中的每一个的标识符。无法仅通过进程名访问进程资源,但是检索到与进程资源关联的 Process 组件数组后,就可以启动、终止和以其他方式操作系统资源了。
下面的示例检索的信息涉及当前进程、本地计算机上运行的“记事本”的所有实例、在使用计算机别名和 IP 地址的特定计算机上运行的“记事本”的所有实例、本地计算机和远程计算机上运行的所有进程,以及本地计算机或远程计算机上使用进程 ID 的特定进程。
using System; using System.Diagnostics; using System.ComponentModel; namespace MyProcessSample { /// <summary> /// Shell for the sample. /// </summary> class MyProcess { void BindToRunningProcesses() { // Get the current process. Process currentProcess = Process.GetCurrentProcess(); // Get all instances of Notepad running on the local // computer. Process [] localByName = Process.GetProcessesByName("notepad"); // Get all instances of Notepad running on the specifiec // computer. // 1. Using the computer alias (do not precede with "\\"). Process [] remoteByName = Process.GetProcessesByName("notepad", "myComputer"); // 2. Using an IP address to specify the machineName parameter. Process [] ipByName = Process.GetProcessesByName("notepad", "169.0.0.0"); // Get all processes running on the local computer. Process [] localAll = Process.GetProcesses(); // Get all processes running on the remote computer. Process [] remoteAll = Process.GetProcesses("myComputer"); // Get a process on the local computer, using the process id. Process localById = Process.GetProcessById(1234); // Get a process on a remote computer, using the process id. Process remoteById = Process.GetProcessById(2345, "myComputer"); } static void Main() { MyProcess myProcess = new MyProcess(); myProcess.BindToRunningProcesses(); } } }
- LinkDemand
用于完全信任直接调用方。此成员不能由部分受信任的代码使用。