shell desde VB 6

07/10/2004 - 17:25 por Miquel | Informe spam
Hola,

Tengo una aplicación en C# de Cónsola, que espara recibir un parámetro en su
Main
La aplicación devuelve siempre un número.

La llamo desde otra aplicación hecha en VB6 a través de shell, de la forma:
Dim Resultado as long
Resultado = shell(RutaAplicacionC# Parametro, vbNomalFocus)

La aplicación C# se ejecuta correctamente (porque en la ventana de consola
muestro el resultado, y este es correcto).
Pero shell, no me devuelve el numero que retorna la aplicacion c#, sino uno
que diria que es aleatorio.

alguien sabe qué estoy haciendo mal?
Grácias

Preguntas similare

Leer las respuestas

#1 Alejandro Perez
07/10/2004 - 18:25 | Informe spam
Hola Miguel. Te aseguraste que tu aplicacion en C# esta
siempre retornando el valor que debe? Intentaste llamar a
tu aplicacion de C# desde otra aplicacion .NET a ver si
recibes el valor correcto?

Si fuera asi, entonces tendriamos que ir del lado de VB6 a
ver que puede estar pasando con la funcion Shell.

Alejandro Perez
MCSD/MCDBA/MCT
Caracas - Venezuela


Mostrar la cita
un parámetro en su
Mostrar la cita
shell, de la forma:
Mostrar la cita
vbNomalFocus)
Mostrar la cita
ventana de consola
Mostrar la cita
aplicacion c#, sino uno
Mostrar la cita
#2 Miquel
07/10/2004 - 18:35 | Informe spam
Hola Alejandro, y grácias por tu tiempo

Si. La aplicación devuelve el valor correcto.
Creo, que el problema está en que Shell de VB6 (y creo que en VB.NET igual),
no devuelve el valor que retorna la aplicación llamada, sino que retorna el
identificador de la aplicación llamada.
Lo que me pregunto ahora, es cómo puedo recuperar el valor que devuelve la
aplicación llamada.



"Alejandro Perez" escribió en el mensaje
news:414f01c4ac8a$329c39a0$
Hola Miguel. Te aseguraste que tu aplicacion en C# esta
siempre retornando el valor que debe? Intentaste llamar a
tu aplicacion de C# desde otra aplicacion .NET a ver si
recibes el valor correcto?

Si fuera asi, entonces tendriamos que ir del lado de VB6 a
ver que puede estar pasando con la funcion Shell.

Alejandro Perez
MCSD/MCDBA/MCT
Caracas - Venezuela


Mostrar la cita
un parámetro en su
Mostrar la cita
shell, de la forma:
Mostrar la cita
vbNomalFocus)
Mostrar la cita
ventana de consola
Mostrar la cita
aplicacion c#, sino uno
Mostrar la cita
#3 Octavio Hernandez
07/10/2004 - 23:36 | Informe spam
Miquel,

Efectivamente, Shell devuelve un handle de instancia.
La función GetExitCodeProcess sí te dice el código de terminación del
proceso llamado (el valor que debes asociar al return de la función main()
de tu programa en C).
Prueba con este código:

****************************************************************************
****
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 Function Ejecutar(Aplicacion As String)
Dim hProceso As Long 'Handle del proceso
Dim Activa As Long 'Valor de retorno / Estado del proceso
Dim tmp 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
tmp = GetExitCodeProcess(hProceso, Activa)

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

Private Sub cmdEjecutar_Click()
Dim N As Long
N = Ejecutar Trim("PRUEBA.exe")
' Aquí tienes en N el valor devuelto por el EXE
End Sub

****************************************************************************
****

"Miquel" escribió en el mensaje
news:
Mostrar la cita
igual),
Mostrar la cita
el
Mostrar la cita
#4 Miquel
08/10/2004 - 11:51 | Informe spam
Gràcias!
Miquel


"Octavio Hernandez" escribió en el mensaje
news:%
Mostrar la cita
****************************************************************************
Mostrar la cita
As
Mostrar la cita
As
Mostrar la cita
****************************************************************************
Mostrar la cita
la
Mostrar la cita
Ads by Google
Search Busqueda sugerida