Inicio | Contacto | Mapa Sitio     
HomeTutoriales Fotos Contacto
tutoriales > Ejectuar Procesos dentro de una aplicación C#, Visual basic .NET

Ejectuar Procesos dentro de una aplicación C#, Visual basic .NET

Algunos veces dentro de una aplicación se necesita que se abran aplicaciones exteriores para realizar algún tipo de proceso.
Para abrir un proceso:

C#
En C# se tiene que importar using System.Diagnostics;
En el código usar:

Process myProcess;
myProcess = Process.Start("Notepad.exe");


Visual Basic .NET

En el código usar:

Dim myProcess As New Process
myProcess.StartInfo.FileName = "Notepad.exe"
myProcess.Start()


Con Process se pueden realizar muchas operaciones como por ejemplo se puede necesitar abrir una página web con una dirección. Process puede recibir argumentos y estos argumentos van en relación con la aplicación que se este ejecutando. Al ejecutar internet explorer se le puede pasar como argumento la dirección URL:

C#

Process myProcess;
myProcess=Process.Start("iexplore","/site/tuto/main_tutoriales.php");


Visual Basic .NET

Dim myProcess As New Process
myProcess.StartInfo.FileName = "Notepad.exe"
myProcess.Start()


Otra opción que se tiene con Process es esperar a que termine el proceso que se ha lanzado y cuando termine devolver el control a nuestra aplicación. Esto se realiza con WaitForExit

En el siguiente ejemplo se lanza notepad se espera a que se cierre y luego se abre una página web con la dirección URL

C#

Process miProceso;
miProceso=Process.Start("notepad.exe");
miProceso.WaitForExit();
miProceso=Process.Start("iexplore.exe","/site/tuto/main_tutoriales.php");


Visual Basic .NET

Dim myProcess As New Process
myProcess.StartInfo.FileName = "Notepad.exe"
myProcess.Start()
myProcess.WaitForExit()
myProcess.Start("iexplore.exe", "/site/tuto/main_tutoriales.php")


Otra manera de que el programa continúe ejecutándose, aunque se este esperando a que un proceso termine (asíncrona) a diferencia de waitforexit() que es sincrona, es usar Exited y EnableRaisingEvents=true. Así cuando el proceso que esta asociado es cerrado o termina bien o anormalmente, el sistema operativo informa a cada proceso al que estaba el proceso asociado, sabiendo que tiene que hacer.
Para que funcione hay que igual EnableRaisingEvents=true ya que por defecto es igual a false. Esto es así porque controlar si el proceso ha terminado utiliza bastantes recursos del sistema.

Para ejecutarlo hacer lo siguiente:

C#

private void Form1_Load(object sender, System.EventArgs e)
{
Process miProceso;
   miProceso=Process.Start("notepad.exe");
   miProceso.EnableRaisingEvents=true;
   miProceso.Exited += new EventHandler(process_Exited);
   //seguir escribiedo código mientras se ejecuta el proceso
}

private void process_Exited(object sender, EventArgs e)
{
   MessageBox.Show("si he terminado");
}


Visual Basic .NET


Private Sub Procesos()
   Dim myProcess As New Process()
   myProcess.StartInfo.FileName = "Notepad.exe"
   myProcess.Start()
   myProcess.EnableRaisingEvents = True
   AddHandler myProcess.Exited, AddressOf myProcesoSalio
   'seguir escribiendo código mientras se ejecuta el proceso
End Sub

Private Sub myProcesoSalio(ByVal sender As System.Object, ByVal e As System.EventArgs)
   MsgBox("he terminado")
End Sub


Este tutorial es referente a ejecutar procesos dentro de una aplicación más adelante se hablará de como administrar los procesos que se esten ejecutando dentro de la máquina. Ya sabemos que todo tipo de procesos del sistema, aplicaciones (servicios que se ejecutan en segundo plano como el iis, sql server etc.) los cuales se pueden parar, arrancar de esto se hablará próximamente.




Errores, Recomendanciones, Omisiones u otra información por favor contacte conmigo
 
Directorio