Foros del Web » Programación para mayores de 30 ;) » Programación General »

Lanzar una nueva aplicación desde VB6

Estas en el tema de Lanzar una nueva aplicación desde VB6 en el foro de Programación General en Foros del Web. Hola, necesito lanzar una aplicación secundaria (.exe) desde una aplicación VBasic 6 y además necesito comprobar si dicha aplicación secundaria esta ejecutándose o ha sido ...
  #1 (permalink)  
Antiguo 23/03/2004, 05:29
 
Fecha de Ingreso: septiembre-2003
Mensajes: 26
Antigüedad: 21 años, 2 meses
Puntos: 0
Lanzar una nueva aplicación desde VB6

Hola, necesito lanzar una aplicación secundaria (.exe) desde una aplicación VBasic 6 y además necesito comprobar si dicha aplicación secundaria esta ejecutándose o ha sido cerrada, en ese caso se debe volver a lanzar indefinidamente, pero sólo debe haber una instancia de dicha aplicación secundaria, lo mismo que la principal.

Algo parecido a esto, pero k no se ejecuten multiples instancias a la vez de la aplicación miprograma.exe.


Public Sub Main()
Dim i As Integer

i = 1

Do While i = 1
If App.PrevInstance = True Then
ExitProcess App.hInstance
Else
Shell "c:\app\miprograma.exe
End If
Loop

End Sub



Saludos
  #2 (permalink)  
Antiguo 26/03/2004, 14:11
Avatar de hmtech  
Fecha de Ingreso: agosto-2003
Ubicación: Puerto Rico
Mensajes: 332
Antigüedad: 21 años, 3 meses
Puntos: 0
hola
creo que esto es lo que buscas:

en un modulo:

Option Explicit

Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long

Public Const STILL_ACTIVE = &H103
Public Const PROCESS_QUERY_INFORMATION = &H400

Public Sub Ejecutar(Aplicacion As String)
Dim hProceso As Long 'Handle del proceso
Dim Activa As Long 'Valor devuleto por GetExitCodeProcess
Dim ret As Long

'Ejecutar la aplicacion, y quedarse con el handle (manipulador)
'del proceso, para poder controlar cuando termina
'VBNormalFocus hace que la aplicación comienze en una ventana normal
hProceso = OpenProcess(PROCESS_QUERY_INFORMATION, 0, Shell(Aplicacion, 1))

Do
'Obtiene información del proceso que iniciamos antes
ret = GetExitCodeProcess(hProceso, Activa)

'Para que siga funcionando el sistema normalmente,
'y se ejecuten los eventos
DoEvents
Loop While Activa = STILL_ACTIVE 'Sigue activa?
End Sub


En la forma:

Private Sub cmdEjecutar_Click()
Ejecutar Trim(ruta de la aplicacion)

'desde aqui se ejecutara cuando la apliocacion cierre
MsgBox "¡Listo! Ya terminó la aplicación ejecutada"
End Sub

saludos
hmtech
__________________
"...todos los días hay que luchar por que ese amor a la humanidad viviente se transforme en hechos concretos, en actos que sirvan de ejemplo, de movilización."
Che Guevara

Última edición por hmtech; 26/03/2004 a las 14:37
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:09.