Para rodar o "MYRUN" no windows 98, o WSH tem que estar instalado.
Vejam o exemplo abaixo que ensina como instalar ele.
Código: Selecionar todos
* Este programa tem como função exemplificar o uso da função "myrun" sobre o windows 98
* O programa abaixo (em meus testes), executou sem problemas e sem abrir aquela janelinha
* preta.
#include "fivewin.ch"
*************
function MAIN( cComando )
*************
if pcount() > 0
&& Lembrete: Para se testar este programa passando um parametro, faça assim:
&& Ex: tesmyrun "arj a teste *.*" <- Observe que tem que ter as "aspas" no
&& INICIO e no FIM, pois senão o programa
&& entende que o parametro passado é somente
&& a primeira palavra, ou seja, "arj"
msgstop( myrun( cComando,,, .T. ) )
else
&& Via código já tem que ter as aspas.
msgstop( myrun( "dir > teste.txt",,, .T. ) )
endif
return NIL
**************
function MYRUN( cComan, nStyle, lWait, lShowR )
**************
local oShell, nRet
nStyle := iif( valtype( nStyle ) != "N", 0, nStyle )
lWait := iif( ValType( lWait ) != "L", .T., lWait )
lShowR := iif( ValType( lShowR ) != "L", .F., lShowR )
**cComan := iif( !GetEnv( "OS" ) == "Windows_NT", "start " + cComan, cComan )
if !IsActiveX( "WScript.Shell" )
if winexec( "REGSVR32 " + GetSysDir() + "\wshom.ocx /s" ) = 0
msgstop( "Não foi possível instalar o serviço <Windows Scripting> !!!" + CRLF + ;
"Para instalar este serviço, é necessário o arquivo <wshom.ocx>", "Atenção" )
if os_iswin98()
msginfo( "Faça o seguinte:" + CRLF + ;
"" + CRLF + ;
"Vá em:" + CRLF + ;
"- Configurações" + CRLF + ;
"- Painel de controle" + CRLF + ;
"- Adicionar/remover programas" + CRLF + ;
"- Instalação do windows" + CRLF + ;
"- Acessórios" + CRLF + ;
"- Detalhes" + CRLF + ;
"- Marque a opção: [X] Windows scripting Host" + CRLF + ;
"- Execute este programa novamente", "Dica para instalar o <Windows Scripting>" )
endif
return .F.
endif
endif
try
oShell := CreateObject( "WScript.Shell" )
catch
msgstop( "<WScript.Shell> não disponível. [" + Ole2TxtError()+ "]" )
return .F.
end
nRet := oShell:Run( "%comspec% /c " + cComan, nStyle, lWait )
if lShowR
msgstop( "Retorno da função MYRUN() para o Comando [" + cComan + "]: " + ltrim(Str( nRet )) )
endif
oShell := NIL
return iif( nRet = 0, .T., .F. )
Abraços,
Rossine.
