Robin's Blog

记录 积累 学习 成长

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
 

创建新的 Process 组件的数组,并将它们与本地计算机上共享指定的进程名称的所有进程资源关联。

命名空间:  System.Diagnostics
程序集:  System(在 System.dll 中)

Visual Basic(声明)
Public Shared Function GetProcessesByName ( _
    processName As String _
) As Process()
Visual Basic (用法)
Dim processName As String
Dim returnValue As Process()

returnValue = Process.GetProcessesByName(processName)
C#
public static Process[] GetProcessesByName(
    string processName
)
Visual C++
public:
static array<Process^>^ GetProcessesByName(
    String^ processName
)
J#
public static Process[] GetProcessesByName(
    String processName
)
JScript
public static function GetProcessesByName(
    processName : String
) : Process[]

参数

processName
类型:System..::.String

该进程的友好名称。

返回值

类型:array<System.Diagnostics..::.Process>[]()[]

Process 类型的数组,它表示运行指定应用程序或文件的进程资源。

异常 条件
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 

    用于完全信任直接调用方。此成员不能由部分受信任的代码使用。

posted on 2010-03-03 08:41  Robin99  阅读(10501)  评论(0编辑  收藏  举报