Process.GetProcessById Método

Definição

Cria um novo Process componente e associa-o ao recurso de processo existente que especifica.

Sobrecargas

Name Description
GetProcessById(Int32)

Devolve um novo Process componente, dado o identificador de um processo no computador local.

GetProcessById(Int32, String)

Devolve um novo Process componente, dado um identificador de processo e o nome de um computador na rede.

GetProcessById(Int32)

Devolve um novo Process componente, dado o identificador de um processo no computador local.

public:
 static System::Diagnostics::Process ^ GetProcessById(int processId);
public static System.Diagnostics.Process GetProcessById(int processId);
static member GetProcessById : int -> System.Diagnostics.Process
Public Shared Function GetProcessById (processId As Integer) As Process

Parâmetros

processId
Int32

O identificador único do sistema de um recurso de processo.

Devoluções

Um Process componente associado ao recurso local do processo identificado pelo processId parâmetro.

Exceções

O processo especificado pelo processId parâmetro não está a correr. O identificador pode estar expirado.

Exemplos

O exemplo seguinte recupera informações do processo atual, dos processos a correr no computador local, de todas as instâncias do Bloco de Notas a correr no computador local e de um processo específico no computador local. Depois, recolhe informações para os mesmos processos num computador remoto.

using System;
using System.Diagnostics;
using System.ComponentModel;

namespace MyProcessSample
{
    class MyProcess
    {
        void BindToRunningProcesses()
        {
            // Get the current process.
            Process currentProcess = Process.GetCurrentProcess();

            // Get all processes running on the local computer.
            Process[] localAll = Process.GetProcesses();

            // Get all instances of Notepad running on the local computer.
            // This will return an empty array if notepad isn't running.
            Process[] localByName = Process.GetProcessesByName("notepad");

            // Get a process on the local computer, using the process id.
            // This will throw an exception if there is no such process.
            Process localById = Process.GetProcessById(1234);

            // Get processes running on a remote computer. Note that this
            // and all the following calls will timeout and throw an exception
            // if "myComputer" and 169.0.0.0 do not exist on your local network.

            // Get all processes on a remote computer.
            Process[] remoteAll = Process.GetProcesses("myComputer");

            // Get all instances of Notepad running on the specific computer, using machine name.
            Process[] remoteByName = Process.GetProcessesByName("notepad", "myComputer");

            // Get all instances of Notepad running on the specific computer, using IP address.
            Process[] ipByName = Process.GetProcessesByName("notepad", "169.0.0.0");

            // Get a process on a remote computer, using the process id and machine name.
            Process remoteById = Process.GetProcessById(2345, "myComputer");
        }

        static void Main()
        {
            MyProcess myProcess = new MyProcess();
            myProcess.BindToRunningProcesses();
        }
    }
}
open System.Diagnostics

// Get the current process.
let currentProcess = Process.GetCurrentProcess()

// Get all processes running on the local computer.
let localAll = Process.GetProcesses()

// Get all instances of Notepad running on the local computer.
// This will return an empty array if notepad isn't running.
let localByName = Process.GetProcessesByName "notepad"

// Get a process on the local computer, using the process id.
// This will throw an exception if there is no such process.
let localById = Process.GetProcessById 1234

// Get processes running on a remote computer. Note that this
// and all the following calls will timeout and throw an exception
// if "myComputer" and 169.0.0.0 do not exist on your local network.

// Get all processes on a remote computer.
let remoteAll = Process.GetProcesses "myComputer"

// Get all instances of Notepad running on the specific computer, using machine name.
let remoteByName = Process.GetProcessesByName("notepad", "myComputer")

// Get all instances of Notepad running on the specific computer, using IP address.
let ipByName = Process.GetProcessesByName("notepad", "169.0.0.0")

// Get a process on a remote computer, using the process id and machine name.
let remoteById = Process.GetProcessById(2345, "myComputer")
Imports System.Diagnostics
Imports System.ComponentModel

Namespace MyProcessSample
    Class MyProcess
        Sub BindToRunningProcesses()
            ' Get the current process. You can use currentProcess from this point
            ' to access various properties and call methods to control the process.
            Dim currentProcess As Process = Process.GetCurrentProcess()

            ' Get all processes running on the local computer.
            Dim localAll As Process() = Process.GetProcesses()

            ' Get all instances of Notepad running on the local computer.
            ' This will return an empty array if notepad isn't running.
            Dim localByName As Process() = Process.GetProcessesByName("notepad")

            ' Get a process on the local computer, using the process id.
            ' This will throw an exception if there is no such process.
            Dim localById As Process = Process.GetProcessById(1234)


            ' Get processes running on a remote computer. Note that this
            ' and all the following calls will timeout and throw an exception
            ' if "myComputer" and 169.0.0.0 do not exist on your local network.

            ' Get all processes on a remote computer.
            Dim remoteAll As Process() = Process.GetProcesses("myComputer")

            ' Get all instances of Notepad running on the specific computer, using machine name.
            Dim remoteByName As Process() = Process.GetProcessesByName("notepad", "myComputer")

            ' Get all instances of Notepad running on the specific computer, using IP address.
            Dim ipByName As Process() = Process.GetProcessesByName("notepad", "169.0.0.0")

            ' Get a process on a remote computer, using the process id and machine name.
            Dim remoteById As Process = Process.GetProcessById(2345, "myComputer")
        End Sub

        Shared Sub Main()
            Dim myProcess As New MyProcess()
            myProcess.BindToRunningProcesses()
        End Sub

    End Class

End Namespace 'MyProcessSample

Observações

Use este método para criar um novo Process componente e associá-lo a um recurso de processo no computador local. O recurso do processo já deve existir no computador, pois GetProcessById(Int32) não cria um recurso do sistema, mas sim associa um recurso a um componente gerado Process pela aplicação. Um processo Id só pode ser recuperado para um processo que esteja atualmente a correr no computador. Após o término do processo, GetProcessById(Int32) lança uma exceção se lhe passar um identificador expirado.

Em qualquer computador em particular, o identificador de um processo é único. GetProcessById(Int32) devolve no máximo um processo. Se quiseres obter todos os processos a correr uma aplicação em particular, usa GetProcessesByName(String). Se existirem múltiplos processos no computador a executar a aplicação especificada, GetProcessesByName(String) retorna um array contendo todos os processos associados. Pode consultar cada um destes processos por sua vez para obter o seu identificador. O identificador do processo pode ser visualizado no painel Processes do Gestor de Tarefas Windows. A PID coluna mostra o identificador do processo atribuído a um processo.

O parâmetro processId é um Int32 (um inteiro com sinal de 32 bits), embora a API de Windows subjacente utilize um DWORD (um inteiro não assinado de 32 bits) para APIs semelhantes. Isto deve-se a razões históricas.

Ver também

Aplica-se a

GetProcessById(Int32, String)

Devolve um novo Process componente, dado um identificador de processo e o nome de um computador na rede.

public:
 static System::Diagnostics::Process ^ GetProcessById(int processId, System::String ^ machineName);
public static System.Diagnostics.Process GetProcessById(int processId, string machineName);
static member GetProcessById : int * string -> System.Diagnostics.Process
Public Shared Function GetProcessById (processId As Integer, machineName As String) As Process

Parâmetros

processId
Int32

O identificador único do sistema de um recurso de processo.

machineName
String

O nome de um computador na rede.

Devoluções

Um Process componente associado a um recurso de processo remoto identificado pelo processId parâmetro.

Exceções

O processo especificado pelo processId parâmetro não está a correr. O identificador pode estar expirado.

-ou-

A sintaxe dos machineName parâmetros é inválida. O nome pode ter comprimento zero (0).

O machineName parâmetro é null.

Exemplos

O exemplo seguinte recupera informações do processo atual, dos processos a correr no computador local, de todas as instâncias do Bloco de Notas a correr no computador local e de um processo específico no computador local. Depois, recolhe informações para os mesmos processos num computador remoto.

using System;
using System.Diagnostics;
using System.ComponentModel;

namespace MyProcessSample
{
    class MyProcess
    {
        void BindToRunningProcesses()
        {
            // Get the current process.
            Process currentProcess = Process.GetCurrentProcess();

            // Get all processes running on the local computer.
            Process[] localAll = Process.GetProcesses();

            // Get all instances of Notepad running on the local computer.
            // This will return an empty array if notepad isn't running.
            Process[] localByName = Process.GetProcessesByName("notepad");

            // Get a process on the local computer, using the process id.
            // This will throw an exception if there is no such process.
            Process localById = Process.GetProcessById(1234);

            // Get processes running on a remote computer. Note that this
            // and all the following calls will timeout and throw an exception
            // if "myComputer" and 169.0.0.0 do not exist on your local network.

            // Get all processes on a remote computer.
            Process[] remoteAll = Process.GetProcesses("myComputer");

            // Get all instances of Notepad running on the specific computer, using machine name.
            Process[] remoteByName = Process.GetProcessesByName("notepad", "myComputer");

            // Get all instances of Notepad running on the specific computer, using IP address.
            Process[] ipByName = Process.GetProcessesByName("notepad", "169.0.0.0");

            // Get a process on a remote computer, using the process id and machine name.
            Process remoteById = Process.GetProcessById(2345, "myComputer");
        }

        static void Main()
        {
            MyProcess myProcess = new MyProcess();
            myProcess.BindToRunningProcesses();
        }
    }
}
open System.Diagnostics

// Get the current process.
let currentProcess = Process.GetCurrentProcess()

// Get all processes running on the local computer.
let localAll = Process.GetProcesses()

// Get all instances of Notepad running on the local computer.
// This will return an empty array if notepad isn't running.
let localByName = Process.GetProcessesByName "notepad"

// Get a process on the local computer, using the process id.
// This will throw an exception if there is no such process.
let localById = Process.GetProcessById 1234

// Get processes running on a remote computer. Note that this
// and all the following calls will timeout and throw an exception
// if "myComputer" and 169.0.0.0 do not exist on your local network.

// Get all processes on a remote computer.
let remoteAll = Process.GetProcesses "myComputer"

// Get all instances of Notepad running on the specific computer, using machine name.
let remoteByName = Process.GetProcessesByName("notepad", "myComputer")

// Get all instances of Notepad running on the specific computer, using IP address.
let ipByName = Process.GetProcessesByName("notepad", "169.0.0.0")

// Get a process on a remote computer, using the process id and machine name.
let remoteById = Process.GetProcessById(2345, "myComputer")
Imports System.Diagnostics
Imports System.ComponentModel

Namespace MyProcessSample
    Class MyProcess
        Sub BindToRunningProcesses()
            ' Get the current process. You can use currentProcess from this point
            ' to access various properties and call methods to control the process.
            Dim currentProcess As Process = Process.GetCurrentProcess()

            ' Get all processes running on the local computer.
            Dim localAll As Process() = Process.GetProcesses()

            ' Get all instances of Notepad running on the local computer.
            ' This will return an empty array if notepad isn't running.
            Dim localByName As Process() = Process.GetProcessesByName("notepad")

            ' Get a process on the local computer, using the process id.
            ' This will throw an exception if there is no such process.
            Dim localById As Process = Process.GetProcessById(1234)


            ' Get processes running on a remote computer. Note that this
            ' and all the following calls will timeout and throw an exception
            ' if "myComputer" and 169.0.0.0 do not exist on your local network.

            ' Get all processes on a remote computer.
            Dim remoteAll As Process() = Process.GetProcesses("myComputer")

            ' Get all instances of Notepad running on the specific computer, using machine name.
            Dim remoteByName As Process() = Process.GetProcessesByName("notepad", "myComputer")

            ' Get all instances of Notepad running on the specific computer, using IP address.
            Dim ipByName As Process() = Process.GetProcessesByName("notepad", "169.0.0.0")

            ' Get a process on a remote computer, using the process id and machine name.
            Dim remoteById As Process = Process.GetProcessById(2345, "myComputer")
        End Sub

        Shared Sub Main()
            Dim myProcess As New MyProcess()
            myProcess.BindToRunningProcesses()
        End Sub

    End Class

End Namespace 'MyProcessSample

Observações

Use este método para criar um novo Process componente e associá-lo a um recurso de processo num computador remoto na rede. O recurso de processo deve já existir no computador especificado, pois GetProcessById(Int32, String) não cria um recurso do sistema, mas sim associa um recurso a um componente gerado Process pela aplicação. Um processo Id só pode ser recuperado para um processo que esteja atualmente a correr no computador. Após o término do processo, GetProcessById(Int32, String) lança uma exceção se lhe passar um identificador expirado.

Em qualquer computador em particular, o identificador de um processo é único. GetProcessById(Int32, String) devolve no máximo um processo. Se quiseres obter todos os processos a correr uma aplicação em particular, usa GetProcessesByName(String). Se existirem múltiplos processos no computador a executar a aplicação especificada, GetProcessesByName(String) retorna um array contendo todos os processos associados. Pode consultar cada um destes processos por sua vez para obter o seu identificador. O identificador do processo pode ser visualizado no painel Processes do Gestor de Tarefas Windows. A PID coluna mostra o identificador do processo atribuído a um processo.

Se não especificar um machineName, é utilizado o computador local. Alternativamente, pode especificar o computador local definindo machineName para o valor "." ou para uma cadeia vazia ("").

O parâmetro processId é um Int32 (um inteiro com sinal de 32 bits), embora a API de Windows subjacente utilize um DWORD (um inteiro não assinado de 32 bits) para APIs semelhantes. Isto deve-se a razões históricas.

Ver também

Aplica-se a