Process.Id プロパティ

定義

関連付けられたプロセスの一意の識別子を取得します。Gets the unique identifier for the associated process.

public:
 property int Id { int get(); };
public int Id { get; }
member this.Id : int
Public ReadOnly Property Id As Integer

プロパティ値

この Process インスタンスが参照する、システムが生成したプロセスの一意の識別子。The system-generated unique identifier of the process that is referenced by this Process instance.

例外

プロセスの Id プロパティが設定されていません。The process's Id property has not been set.

- または --or- この Process オブジェクトに関連付けられているプロセスはありません。There is no process associated with this Process object.

次の例は、アプリケーションの実行中のすべてのインスタンスの Id を取得する方法を示しています。The following example demonstrates how to obtain the Id for all running instances of an application. このコードは、メモ帳の新しいインスタンスを作成し、メモ帳のすべてのインスタンスを一覧表示し、ユーザーが Id 番号を入力して特定のインスタンスを削除できるようにします。The code creates a new instance of Notepad, lists all the instances of Notepad, and then allows the user to enter the Id number to remove a specific instance.

using System;
using System.Threading;
using System.Security.Permissions;
using System.Security.Principal;
using System.Diagnostics;

class ProcessDemo
{
    public static void Main()
    {
        Process notePad = Process.Start("notepad");
        Console.WriteLine("Started notepad process Id = " + notePad.Id);
        Console.WriteLine("All instances of notepad:");
        // Get Process objects for all running instances on notepad.
        Process[] localByName = Process.GetProcessesByName("notepad");
        int i = localByName.Length;
        while (i > 0)
        {
            // You can use the process Id to pass to other applications or to
            // reference that particular instance of the application.
            Console.WriteLine(localByName[i - 1].Id.ToString());
            i -= 1;
        }
        
        i = localByName.Length;
        while (i > 0)
        {
            Console.WriteLine("Enter a process Id to kill the process");
            string id = Console.ReadLine();
            if (string.IsNullOrEmpty(id))
                break;

            try
            {
                using (Process chosen = Process.GetProcessById(Int32.Parse(id)))
                {
                    if (chosen.ProcessName == "notepad")
                    {
                        chosen.Kill();
                        chosen.WaitForExit();
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Incorrect entry.");
                continue;
            }
            
            i -= 1;
        }
    }
}
Imports System.Threading
Imports System.Security.Permissions
Imports System.Security.Principal
Imports System.Diagnostics



Class ProcessDemo

    Public Shared Sub Main()
        Dim notePad As Process = Process.Start("notepad")
        Console.WriteLine("Started notepad process Id = " + notePad.Id.ToString())
        Console.WriteLine("All instances of notepad:")
        ' Get Process objects for all running instances on notepad.
        Dim localByName As Process() = Process.GetProcessesByName("notepad")
        Dim i As Integer = localByName.Length
        While i > 0
            ' You can use the process Id to pass to other applications or to
            ' reference that particular instance of the application.
            Console.WriteLine(localByName((i - 1)).Id.ToString())
            i -= 1
        End While

        i = localByName.Length
        While i > 0
            Console.WriteLine("Enter a process Id to kill the process")
            Dim id As String = Console.ReadLine()
            If id = String.Empty Then
                Exit While
            End If
            Try
                Using chosen As Process = Process.GetProcessById(Int32.Parse(id))
                    If chosen.ProcessName = "notepad" Then
                        chosen.Kill()
                        chosen.WaitForExit()
                    End If
                End Using
            Catch e As Exception
                Console.WriteLine("Incorrect entry.")
                GoTo ContinueWhile1
            End Try
            i -= 1
ContinueWhile1:
        End While

    End Sub
End Class

注釈

プロセス Id は、関連付けられているプロセスが実行されていない場合は無効です。The process Id is not valid if the associated process is not running. そのため、Id のプロパティを取得する前に、プロセスが実行されていることを確認する必要があります。Therefore, you should ensure that the process is running before attempting to retrieve the Id property. プロセスが終了するまで、プロセス識別子はシステム全体のプロセスを一意に識別します。Until the process terminates, the process identifier uniquely identifies the process throughout the system.

プロセス識別子を GetProcessById 方法に渡すことによって、ローカルコンピューターまたはリモートコンピューターで実行されているプロセスを新しい Process インスタンスに接続できます。You can connect a process that is running on a local or remote computer to a new Process instance by passing the process identifier to the GetProcessById method. GetProcessById は、新しいコンポーネントを作成し、新しい Process インスタンスの Id プロパティを自動的に設定する static メソッドです。GetProcessById is a static method that creates a new component and sets the Id property for the new Process instance automatically.

プロセス識別子は、システムで再利用できます。Process identifiers can be reused by the system. Id プロパティ値は、関連付けられているプロセスが実行されている場合にのみ一意です。The Id property value is unique only while the associated process is running. プロセスが終了すると、システムは関連のないプロセスに対して Id プロパティ値を再利用できます。After the process has terminated, the system can reuse the Id property value for an unrelated process.

識別子はシステム上で一意であるため、Process インスタンスを渡す代わりに、他のスレッドに渡すことができます。Because the identifier is unique on the system, you can pass it to other threads as an alternative to passing a Process instance. この操作により、システムリソースを節約しながら、プロセスが正しく識別されることを保証できます。This action can save system resources yet guarantee that the process is correctly identified.

セキュリティ

LinkDemand
直前の呼び出し元に対する完全な信頼の場合。for full trust for the immediate caller. このメンバーは、部分的に信頼されているコードから使用することはできません。This member cannot be used by partially trusted code.

適用対象

こちらもご覧ください