Visual Basic - Ejecutar programa de forma síncrona con VB

Life is soft - evento anual de software empresarial
 
Vista:

Ejecutar programa de forma síncrona con VB

Publicado por maito (1 intervención) el 06/04/2001 16:02:09
Hola,

Tengo un problema con la función Shell y agradecería cualquier ayuda.

Quiero ejecutar un .exe al que le paso unos parámetros ( prog.exe -rf param). Para ejecutarlo desde VB 6.0 utilicé la función shell pero esto no me ha funcionadol. El programa .exe debe generar a su vez otro fichero .txt y este fichero no aparece. Sin embargo si que inicia la ejecución ya que aparecen unas líneas de presentación.

En la ayuda de shell, indica que lo hace de forma asíncrona y que puede ocurrir que no se termine la ejecución antes de que se pase a la siguiente sentencia de VB.

¿Alguien me puede ayudar? ¿Se puede ejecutar un programa con alguna otra función?

Gracias
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

RE:Ejecutar programa de forma síncrona con VB

Publicado por Luis Rodrigo Solorzano Monroy (51 intervenciones) el 06/04/2001 18:13:23
hola colega, probablemente esto te funcine,
copiate este codigo en el modulo de tu proyecto,
su funcion: ejecuta cualquier programa asincronicamente o sincronicamente depende del parametro que le pases, ademas espera que termine para poder seguir con las siguientes sentencias VB.
el codigo :
**************************************************
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long

Const STILL_ACTIVE = &H103
Const PROCESS_QUERY_INFORMATION = &H400

Public Sub Ejecutar(ByVal CmdLine As String)
Dim hProcess As Long
Dim RetVal As Long
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(CmdLine, vbMinimizedNoFocus))
Do
GetExitCodeProcess hProcess, RetVal
DoEvents
' Sleep 100
Loop While RetVal = STILL_ACTIVE
End Sub

y asi lo llamas:

Call Ejecutar(App.Path + nombre_programa)

un caluroso saludo desde guatemala....
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

RE:Ejecutar programa de forma síncrona con VB

Publicado por Josi (1 intervención) el 03/02/2015 12:02:19
Muchas gracias Luis. Me ha servido de maravilla
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 Sergio Marta Lucchetti

RE:Ejecutar programa de forma síncrona con VB

Publicado por Sergio Marta Lucchetti (1 intervención) el 30/05/2015 20:47:46
Estimado Luis buenos días.
Yo necesito un consejo sobre lo siguiente:
Yo tengo un Dual-Core PC con Windows 8.1 y un programa MS Access 2010 (*.accde) que analiza y elabora un file de input formado por 2000 records y que se tarda MUCHO rato.
Si yo divido el file de inputo en dos files con cada uno 1000 records y, además, corro dos programas (ver abajo como) donde cada uno considera un file en input:
* ¿es posible?
* ¿los dos programas corren en paralelo? (yo necesito que si)
* ¿se obtiene un GRAN beneficio en tiempo de ejecución?
Ambos programas agregan records al mismo file de output.
.........
Dim GiraShell
GiraShell = Shell("msaccess.exe C:\DhmMrp\Pgm1.accde", 1) <= Este es el primer programa con en input el file 1
GiraShell = Shell("msaccess.exe C:\DhmMrp\Pgm2.accde", 1) <= Este es el segundo programa con en input el file 2
¿Me puedes indicar si está bien o como hacerlo?
Muchisimas gracias y saludos desde México.
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

RE:Ejecutar programa de forma síncrona con VB

Publicado por Francisco Ladizlao (1 intervención) el 06/04/2001 20:27:41
enviame codigo fuente para hacer un menu de ayuda en linea
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