Visual Basic.NET - Multiples procesos (explorer.exe)

 
Vista:

Multiples procesos (explorer.exe)

Publicado por Jose (2 intervenciones) el 26/02/2019 10:42:47
Buenos días,

Es la primera vez que consulto en un foro de programación,

Estoy realizando una aplicacion en vb 2015 en la cual mediante mi aplicacion levanto otra aplicacion externa con el problema que me va creando multitud de procesos cocrentamente explorer.exe con lo que ello conlleva de sobrecargar el sistema. Estaría muy agradecido si me dierais un poco de luz para solventar este problema. Gracias de antemano.

Saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Multiples procesos (explorer.exe)

Publicado por Nacho (54 intervenciones) el 26/02/2019 16:17:07
Sin saber lo que haces....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Multiples procesos (explorer.exe)

Publicado por omar (31 intervenciones) el 26/02/2019 20:29:07
Saludos.

Debes cerrar dichos proceos al abrirlos

asi evitsras sobrecarga
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.796
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Multiples procesos (explorer.exe)

Publicado por Phil Rob (728 intervenciones) el 27/02/2019 17:50:28
Hola,

No es normal que una aplicacion externa ejecuta más process que si ella esta ejecutado sola.
¿Podes enviar la (las) linéa(s) del codigo que llama esta aplicación?

Entonce, puedo buscar una solución ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Multiples procesos (explorer.exe)

Publicado por Jose (2 intervenciones) el 28/02/2019 11:57:33
Buenos días,

Ante todo mil gracias por responder con posibles soluciones.

Este es el codigo con el que llamo a la aplicación externa.


1
2
Dim abrirmac As Object
abrirmac = Shell("c:\MAC2012\MAC2012.exe", 5)


y este es el código con el que una vez que termino lo que quiero hacer con la aplicación externa mato el proceso de dicha la aplicación.


1
2
3
4
5
6
7
8
9
10
Public Sub kill_mac2012()
    Dim procesos As Process()
    Dim i As Integer
    procesos = Process.GetProcessesByName("mac2012")
    If procesos.Length > 0 Then
        For i = procesos.Length - 1 To 0 Step -1
            procesos(i).Kill()
        Next
    End If
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Multiples procesos (explorer.exe)

Publicado por Nacho (54 intervenciones) el 28/02/2019 12:42:09
Quizá el problema sea que llamas a Kill antes de que el proceso termine del todo y cierre el explorer.

Como ya usas la clase Process, úsala para todo. Crea el proceso con Process. La clase te avisa de cuándo ese proceso ha acabado con el evento Exited.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.796
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Multiples procesos (explorer.exe)

Publicado por Phil Rob (728 intervenciones) el 28/02/2019 16:01:58
Hola,

Para detener el proceso, el siguiente procedimiento tiene la ventaja de matarlos a todos :

1
2
3
4
5
6
Public Sub kill_mac2012()
    Dim procesos As System.Diagnostics.Process
    For Each procesos In System.Diagnostics.Process.GetProcesses
        If procesos.ProcessName = "MAC2012" Then procesos.Kill()
    Next
End Sub

Seguro, no tiene que llamar a este procedimiento so mientras tiene que funcionar.
No ovidar de llamar el procedimiento ante la salida del programa apelante.

Propono los siguientes codigos :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub LLAmarProceso(ByVal NombreDelExe As String)  ' ej : c:\MAC2012\MAC2012.exe
    Process.Start(NombreDelExe).WaitForExit(5)
End Sub
 
Private Sub DetenerProceso(ByVal Nombre As String) ' ej : MAC2012
    Dim procesos As System.Diagnostics.Process
    For Each procesos In System.Diagnostics.Process.GetProcesses
        If procesos.ProcessName = Nombre Then procesos.Kill()
    Next
End Sub
 
Private Sub MiPrimerFormulario_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles  Me.FormClosing
    DetenerProceso("MAC2012")
End Sub

Los códigos para usar el evento "Exited" son menos fáciles ... y luego, cuando se produce este evento, ¡no tenemos nada que administrar!

Espero que esto solucione tu problema ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar