Problema con SHELL & OpenProcess

Javi Ro
28 de Diciembre del 2004
Buenas tardes a todos,
A ver si me podeis echar un cable....

Bien, lo que hago es lanzar una aplicación externa (desarrollada en VB6,y cuyos fuentes no tengo acceso), la cual realiza un proceso en 2º plano,
y quiero capturar el nº de error que devuelve.

Ejecuto el siguiente codigo:

*******************************************************************
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, _
Shell(CmdLine, vbHide))
'...donde CmdLine es la ruta del ejecutable

Do

GetExitCodeProcess hProcess, RetVal

DoEvents: Sleep 1000
Loop While RetVal = STILL_ACTIVE
*******************************************************************
Pues bien...funcionaba correctamente, hasta que paso mi aplicación a una maquina mas rapida, donde ya no funciona...me ocurre lo siguiente:
-Cuando ejecuto el OpenProcess, éste me devuelve 0, cuando el Shell que paso como parametro SI que me devuelve el ID de proceso...)

Si reviso el Err.LastDllError me devuelve 87 = PARAMETRO INCORRECTO.

¿Es posible que el proceso que lanzo acabe antes de que el OpenProcess pueda "abrirlo" para consultarlo?? (no se si tiene mucho sentido lo q digo)-> Llego a esta conclusión tras mucho debugar, ya que el proceso funciona correctamente ejecutado a mano, o mediante .bat (cojo el ERRORLEVEL) o de mil maneras, pero cuando ejecuto mi código en maquinas rápidas, me ocurre lo que os comento.

Alguna solución y/o explicación???? A alguien le ha ocurrido alguna vez??? Me he dejao los cuernos en el Google y no he encontrado ningún caso parecido.

Gracias por adelantado.

mvallejos
28 de Diciembre del 2004
Es raro, podrías probar hacer un bat llamando al programa externo y llamar al bat desde el shell

Saludos