Problema con SHELL & OpenProcess
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.
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.
