FoxPro/Visual FoxPro - Como funciona SHELLEXECUTE()

 
Vista:

Como funciona SHELLEXECUTE()

Publicado por Juanma (503 intervenciones) el 16/03/2003 22:47:44
Saludos:
*************************************
Shellexecute(0,"Open","mpasmwin.exe","miarchivo.asm","",0)
if .not. file("miarchivo.hex")
messagebox("Error, no se ha creado el archivo","ERROR")
else
messagebox("se ha creado el archivo miarchivo.hex","OK")
endif
*************************************

Tengo esta rutina en un boton y cuando la ejecuto, noto que antes de ejecutar el MPASMWIN
aparece ya el MESSAGEBOX diciendo Error,no se ha creado el archivo ..... para simultaneamente ejecuta el programa anterior.
Lo cierto es que realmente crea el archivo ... pero no se porque me dice que no ... creo que lee hasta el final de las lineas de codigo para luego volver a la funcion ...?porque?

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:Como funciona SHELLEXECUTE()

Publicado por upliftmofopartyplan (265 intervenciones) el 17/03/2003 14:10:00
Hola!
es probable que siga ejecutando el código despues de crear el archivo.
prueba poner un WAIT antes del IF y ver si funciona.
saludos.
Uplift.
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:Como funciona SHELLEXECUTE()

Publicado por Rodrigo Dinamarca (2 intervenciones) el 17/03/2003 21:30:37
Hola, como sabrás, SHELLEXECUTE() es una función perteneciente a la API de Windows, por lo tanto, no está sujeta a los eventos de tu programa. La función se ejecuta cuando presionas el botón que creaste e inmediatamente retorna el control a tu programa, ejecutando la línea de código inmediatamente siguiente; por lo visto, esto ocurre antes de que termine de cargarse el MPASMWIN, y por eso es que el mensaje aparece antes de que se cargue MPASMWIN.
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:La solución.

Publicado por Rodrigo Dinamarca (2 intervenciones) el 17/03/2003 21:39:12
SHELLEXECUTE() devuelve un valor, creo que si este es distinto de cero es porque se ha producido un error al cargar el archivo solicitado, si no tienes documentación detallada con respecto a los valores que devuelve la función, yo te los puedo enviar.

Puedes evaluar lo siguiente:

nError = Shellexecute(0,"Open","mpasmwin.exe","miarchivo.asm","",0)
if nError = 0
messagebox("Error, no se ha creado el archivo","ERROR")
endif
// En caso contrario no se ejecuta el comando.

Espero que te sirva
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