Para executar sistemas externos, usu a função HB_OpenProcess() que deve retornar -1 se acontecer algum erro durante a execução da expressão, conforme código abeixo:
Código: Selecionar todos
function MYRUN( cComando, msg )
msg:=if(msg=NIL,'',msg)
mValor:=hb_openprocess(cComando,,,,.t.) //xhb.lib
if mValor<0
DBOX(msg+'|Erro do DOS nº ' + tran(ferror(),'99'),,,,,"ATENÇÃO!")
RETU .f.
endif
retu .t.
Vi que se eu inserir a linha "? mValor" antes da linha do IF, a rotina funciona perfeitamente bem.
Algém sabe me dizer o porque dessa falha?

