Iniciar un proceso en C#

Muhammad Zeeshan 12 octubre 2023
  1. ¿Qué es un Proceso en C#?
  2. Utilice Process.Start para iniciar un proceso en C#
  3. Utilice ProcessStartInfo para iniciar un proceso en C#
  4. Utilice Process.GetProcesses para iniciar un proceso en C#
  5. Utilice Process.GetProcessesByName para iniciar un proceso en C#
  6. Utilice StandardOutput para iniciar un proceso en C#
  7. Use Process.Kill para detener un proceso en C#
Iniciar un proceso en C#

Este artículo analizará numerosas formas de iniciar un proceso en C#.

¿Qué es un Proceso en C#?

Un Proceso permite a los desarrolladores acceder a procesos locales y remotos e iniciar y finalizar procesos del sistema local.

ProcessStartInfo define una colección de valores utilizados cuando se inicia un proceso. La clase Process está en el espacio de nombres System.Diagnostics.

Utilice Process.Start para iniciar un proceso en C#

Sigue estos pasos para iniciar un proceso con Process.Start.

Importe las bibliotecas a continuación.

using System;
using System.Diagnostics;

Cree la clase Main, y dentro de la clase Main, escriba este código para iniciar un proceso (especifique el programa, la URL o el archivo que desea iniciar).

Process.Start(@"C:\Users\Shani\Desktop\process.txt");

Código fuente:

using System;
using System.Diagnostics;

class ProcesswithProcessStart {
  public static void Main() {
    Process.Start(@"C:\Users\Shani\Desktop\process.txt");
    Console.WriteLine("Done");
  }
}

La función Start se utiliza para iniciar el proceso. Obtendremos este resultado después de ejecutar la clase ProcesswithProcessStart.

Salida de inicio de proceso

Utilice ProcessStartInfo para iniciar un proceso en C#

Podemos ejecutar cualquier ejecutable. Sin embargo, es posible que se requieran atributos en ProcessStartInfo.

Inicie un proceso utilizando el método ProcessStartInfo siguiendo los pasos a continuación.

Importe las bibliotecas a continuación.

using System;
using System.Diagnostics;

El atributo StartInfo.FileName especifica el programa o documento a ejecutar. Usaremos el programa Microsoft Word como ejemplo. Es un editor y escritor de texto básico.

process.StartInfo.FileName = "WINWORD.EXE";

El nombre del archivo se pasa a StartInfo.Arguments como parámetro. Aquí lanzaremos un archivo de Word llamado process.docx.

process.StartInfo.Arguments = @"C:\Users\Shani\Desktop\process.docx";

Código fuente:

using System;
using System.Diagnostics;

Process process = new Process();

process.StartInfo.FileName = "WINWORD.EXE";
process.StartInfo.Arguments = @"C:\Users\Shani\Desktop\process.docx";
process.Start();

Producción:

Información de inicio del proceso

Utilice Process.GetProcesses para iniciar un proceso en C#

El método Process.GetProcesses genera una lista de nuevos componentes Process vinculados a recursos de proceso existentes.

Importe las bibliotecas a continuación.

using System;
using System.Diagnostics;

Este código producirá una lista de todos los procesos.

Process[] LinkedProcesses = Process.GetProcesses();

Después de eso, obtenemos una matriz de procesos.

Array.ForEach(LinkedProcesses, (process) => {
  Console.WriteLine("Process: {0} Id: {1}", process.ProcessName, process.Id);
});

La función ReadKey() mantendrá la pantalla.

Console.ReadKey();

Código fuente:

using System;
using System.Diagnostics;

Process[] LinkedProcesses = Process.GetProcesses();

Array.ForEach(LinkedProcesses, (process) => {
  Console.WriteLine("Process: {0} Id: {1}", process.ProcessName, process.Id);
});
Console.ReadKey();

Producción:

Proceso Obtener Procesos

Utilice Process.GetProcessesByName para iniciar un proceso en C#

El método Process.GetProcessesByName genera una matriz de nuevos componentes de Process y los correlaciona con los recursos de proceso existentes con el mismo nombre que el proceso proporcionado.

Importe las bibliotecas a continuación.

using System;
using System.Diagnostics;

Todos los procesos asociados con Internet Download Manager se generan en el ejemplo. Se generan sus ID y nombres de proceso.

Process[] LinkedProcesses = Process.GetProcessesByName("InternetDownloadManager");

Los usuarios obtienen la lista de procesos con el nombre IDM.

Console.WriteLine("{0} IDM LinkedProcesses", LinkedProcesses.Length);

Para acceder a todos los procesos devueltos por la función, utilizamos un bucle foreach.

Se accede al ID de cada Proceso. Finalmente, mostramos el número total de procesos descubiertos.

Array.ForEach(LinkedProcesses, (process) => {
  Console.WriteLine("Process: {0} Id: {1}", process.ProcessName, process.Id);
});

Código fuente:

using System;
using System.Diagnostics;

Process[] LinkedProcesses = Process.GetProcessesByName("InternetDownloadManager");
Console.WriteLine("{0} IDM LinkedProcesses", LinkedProcesses.Length);
Array.ForEach(LinkedProcesses, (process) => {
  Console.WriteLine("Process: {0} Id: {1}", process.ProcessName, process.Id);
});
Console.ReadKey();

Producción:

Proceso Obtener procesos por nombre

Utilice StandardOutput para iniciar un proceso en C#

La propiedad StandardOutput devuelve una ruta que puede usarse para leer la salida basada en texto de la aplicación.

Podemos redirigir la salida del proceso estándar utilizando esta propiedad (disponible en ProcessStartInfo). Podemos observar la salida de un programa de otro.

Importe las bibliotecas a continuación.

using System;
using System.Diagnostics;
using System.IO;

Especificaremos el nombre del proceso que deseamos generar aquí.

Prs.StartInfo.FileName = "ipconfig.exe";

Podemos redirigir los flujos de entrada, salida y error configurando UseShellExecute en falso.

Prs.StartInfo.UseShellExecute = false;
Prs.StartInfo.RedirectStandardOutput = true;

Este código iniciará el proceso utilizando la información que ha proporcionado.

Prs.Start();

Para la salida estándar, obtenemos el StreamReader.

StreamReader sr = Prs.StandardOutput;

La función ReadToEnd() se utiliza para leer todos los datos.

string dataoutput = sr.ReadToEnd();

ReadKey() mantendrá la pantalla para mostrar la salida.

Console.ReadKey();

Código fuente:

using System;
using System.Diagnostics;
using System.IO;

class StandarOutput {
  public static void Main() {
    using (Process Prs = new Process()) {
      Prs.StartInfo.FileName = "ipconfig.exe";
      Prs.StartInfo.UseShellExecute = false;
      Prs.StartInfo.RedirectStandardOutput = true;
      Prs.Start();
      StreamReader sr = Prs.StandardOutput;
      string dataoutput = sr.ReadToEnd();
      Console.WriteLine(dataoutput);
      Console.ReadKey();
    }
  }
}

Producción:

Salida estándar

Use Process.Kill para detener un proceso en C#

El siguiente ejemplo inicia un programa y luego lo termina después de unos segundos.

Importe las bibliotecas a continuación.

using System;
using System.Diagnostics;
using System.Threading;

Usando Thread.Sleep(5000), el proceso inicia el Bloc de notas y lo finaliza después de tres segundos.

Thread.Sleep(5000);

La función Kill() se utiliza para terminar el proceso.

process.Kill();

Código fuente:

using System;
using System.Diagnostics;
using System.Threading;

class KillProcess {
  public static void Main() {
    Process process = Process.Start("notepad.exe");
    Thread.Sleep(1000);
    process.Kill();
  }
}
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn

Artículo relacionado - Csharp Process