Primero, ¿El ejecutable se llama zbar.exe o zbarcam.exe?
Asumiendo... que se llama zbarcam.exe
Mi
primera sugerencia sería que probaras este código:
OutRun("C:\Program Files (x86)\ZBar\bin\zbarcam.exe >c:\pba\pba.txt", 0)
IF FILE("c:\pba\pba.txt")
? "Se creo el archivo c:\pba\pba.txt"
ELSE
? "NO se pudo crear el archivo"
ENDIF
FUNCTION OutRun
PARAMETERS M.NomExe, M.Visibi
IF TYPE("M.Visibi") = "U"
M.Visibi = 0
ELSE
IF TYPE("M.Visibi") = "C"
M.Visibi = VAL(M.Visibi)
ENDIF
ENDIF
#define SW_SHOW_INVISIBLE 0
#define SW_SHOW_NORMAL 1
#define SW_SHOW_MINIMIZED 2
#define SW_SHOW_MAXIMIZED 3
oShell = createobject("WScript.Shell")
DO CASE
CASE M.Visibi = 0
oShell.Run(M.NomExe, SW_SHOW_INVISIBLE, .T. )
CASE M.Visibi = 1
oShell.Run(M.NomExe, SW_SHOW_NORMAL, .T. )
CASE M.Visibi = 2
oShell.Run(M.NomExe, SW_SHOW_MINIMIZED, .T. )
CASE M.Visibi = 3
oShell.Run(M.NomExe, SW_SHOW_MAXIMIZED, .T. )
ENDCASE
#undef SW_SHOW_INVISIBLE
#undef SW_SHOW_NORMAL
#undef SW_SHOW_MINIMIZED
#undef SW_SHOW_MAXIMIZED
RETURN .T.
Si lo anterior no te funciona, mi segunda opción sería esta:
? Ejecutar("zbarcam.exe", "open", "C:\Program Files (x86)\ZBar\bin", ">c:\pba\pba.txt", 2)
FUNCTION Ejecutar
LPARAMETERS In_App, In_Action, In_Path, In_Params, In_Visual
IF TYPE("In_Action") <> "C"
In_Action = "open"
ENDIF
IF TYPE("In_Params") <> "C"
In_Params = ""
ENDIF
IF TYPE("In_Path") <> "C"
In_Path = ""
ENDIF
IF TYPE("In_Visual") <> "N"
In_Visual = 1
ENDIF
DECLARE INTEGER ShellExecute IN shell32.DLL ;
INTEGER hndWin, ;
STRING cAction, ;
STRING cFileName, ;
STRING cParams, ;
STRING cDir, ;
INTEGER nShowWin
M.ValRet = ShellExecute(0, In_Action, In_App, In_Params, In_Path, In_Visual)
DO CASE
CASE M.ValRet = 2
M.ValMsg = "Mala Asociación de Archivo."
CASE M.ValRet = 29
M.ValMsg = "No se pudo cargar la Aplicación."
CASE M.ValRet = 30
M.ValMsg = "La Aplicación esta ocupada."
CASE M.ValRet = 31
M.ValMsg = "No hay Asociación de Aplicación"
OTHERWISE
M.ValMsg = "OK"
ENDCASE
CLEAR DLLS "ShellExecute"
RETURN M.ValMsg
Saludos y suerte, Edgar Acevedo