none
Exe de vb6 que devuelva un parametro RRS feed

  • Pregunta

  • Buenos días ocmpañeros. Tengo un problemilla con un Exe que estoy haciendo en vb.6.0. La cosa es que este exe recibe correctamente los parámetros que yo le envío desde mi programa principal, pero lo que no se es como hacerle para que devuelva un parámetro o valor que yo le diga, ya sea numérico o string para que el programa principal lo recupere y pueda seguir trabajando con ese valor devuelto por el programa secundario.

    Un saludo, espero que entendáis lo que quiero decir

    martes, 20 de agosto de 2013 10:13

Respuestas

  • Private Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long)
     Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess
     As Long, lpExitCode As Long) As Long
     Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
     Private Sub Form_Load()
         ExitProcess GetExitCodeProcess(GetCurrentProcess, 0)
     End Sub

    Tu programa principal es un programa en .net que llama a tu ejecutable vb6 con System.Diagnostics.Process.Start???

    En vb para retornar un valor al hacer un exit de la apmicacion o un end debes hacer una llamada al API ExitProcess te pongo un ejemplito arriba iño simplemnte esta instrucción,referenciando claro esta la función del api, ExitProcess somevalue


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    • Marcado como respuesta David Varez miércoles, 21 de agosto de 2013 6:25
    martes, 20 de agosto de 2013 15:27

Todas las respuestas

  • Private Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long)
     Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess
     As Long, lpExitCode As Long) As Long
     Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
     Private Sub Form_Load()
         ExitProcess GetExitCodeProcess(GetCurrentProcess, 0)
     End Sub

    Tu programa principal es un programa en .net que llama a tu ejecutable vb6 con System.Diagnostics.Process.Start???

    En vb para retornar un valor al hacer un exit de la apmicacion o un end debes hacer una llamada al API ExitProcess te pongo un ejemplito arriba iño simplemnte esta instrucción,referenciando claro esta la función del api, ExitProcess somevalue


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    • Marcado como respuesta David Varez miércoles, 21 de agosto de 2013 6:25
    martes, 20 de agosto de 2013 15:27
  • Muchas gracias Sergio, la verdad que con lo que pusiste me iluminaste el camino, jajaja. te cuento como lo he resuelto, a ver que te parece o si se puede mejorar en algún punto.

    En el programa de Vb.6 pongo la sigueinte línea:

    Call ExitProcess(CodigoDeSalida) --> pongo directamente el código, por que si pongo esta línea que tu me dijiste ExitProcess (GetExitCodeProcess(GetCurrentProcess, CodigoDeSalida), no se por que, pero siempre me devuelve un 0, así que opte por poner el código que yo quiero en la aplicación.

    Ahora, en el programa de vb.net pongo lo siguiente para recuperar el código que me devuelve el de vb.6:

            Dim ProcessProperties As New ProcessStartInfo
            ProcessProperties.FileName = RutaDelPrograma
            ProcessProperties.Arguments = Parametros
            ProcessProperties.WindowStyle = ProcessWindowStyle.Maximized
            Dim myProcess As Process = Process.Start(ProcessProperties)
            myProcess.WaitForExit()
            CodigoSalida= myProcess.ExitCode --> En esta línea es en la que capturo el código que meha devuelto el programa de vb.6

    Esto es lo que hago, no se si hay otra forma mejor de hacerlo, pero esto funciona. Si se puede mejorar, dímelo.

    Muchas gracias!!

    miércoles, 21 de agosto de 2013 11:17
  • Lo veo bien

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    miércoles, 21 de agosto de 2013 18:38