Jump to content
Fivewin Brasil

programa externo


Alain da Silva

Recommended Posts

Olá,

Não sou nenhum "jênio", nem conheço metade do que o João postou ( GetInstance()? ). De toda forma, segue uma alternativa:
 

cComando:="javaws.exe d:\progs\esocial\EsocialSign.jar"

MyRun( cComando )

return nil

///////////////////////////////////////////////////////////////////////////////////////
function MyRun( cComando )

local oShell, oRet

oShell := CreateObject( "WScript.Shell" )
oRet   := oShell:Run( "%comspec% /c " + cComando, 0, .T. )
oShell := NIL

return iif( oRet = 0, .t., .f. )

///////////////////////////////////////////////////////////////////////////////////////

 

Link to comment
Share on other sites

  cFile := cFilePath( GetModuleFileName( GetInstance() ) ) + ;
                       "d:\progs\esocial\EsocialSign.jar"  // D:\ tem que existir mermo.
	   WinExec( "javaws.exe " + cFile )
 

obrigado evando e kapiaba por responder.

Kapiaba, do seu jeito ele da um erro Incomplete statement or unbalanced delimiters, e do seu jeito Evandro na da erro mas não executa o programa.

Link to comment
Share on other sites

corrigi mas nenhum dos dois roda o programa. é Windows 10 kapiaba.

tenho um programa no diretório D:\PROGS\esocial\samuel\EsocialSign.jar

tenho um apasta entrada e outra saída.

na pasta entrada tenho o arquivo evtinfoEmpregador.

o que esse programa faz? ele vai na pasta evtinfoempregador assina o arquivo e grava ele na pasta saída, apagando ele da pasta entrada.

obs: se eu for e der dois cliques nele, ele faz o processo.

//chamada externa

      cFile := cFilePath( GetModuleFileName( GetInstance() ) ) + ;
                     "samuel\EsocialSign.jar"  // D:\ tem que existir mermo.
      WinExec( "javaws.exe " + cFile )
      syswait(20)
 

coloquei esse tempo, mas no modo manual, clicando nele o tempo é 2s.

depois eu vou no diretório e vejo se tem o arquivo pra dar seguimento no envio.

Link to comment
Share on other sites

Kapiaba, meu Windows 10 é 32bits.

Estranho que se vou no diretório via comando e coloco:

cd\progs\esocial     <<<enter>>

EsocialSign    >>enter  funciona.

se dou dois cliques nele também funciona.

Testei agora com o  waitrun("D:\PROGS\esocial\EsocialSign.jar") e nada, ele passa pelo comando e não faz o processo.

 

Link to comment
Share on other sites

teste para ver onde voce esta:

#include "FiveWin.ch"
	Function Main()
	   PRIVATE cPRGPATH, cFILEPATH
   PRIVATE cDirProga := GETCURDIR()
	   cPRGPATH := cFILEPATH(GETMODULEFILENAME(GETINSTANCE()))
   cPRGPATH := cShortName(cPRGPATH)
	   ?    cPRGPATH
	   lCHDIR(cPRGPATH)
	   ?    cPRGPATH
	Return Nil
	/*
 *    SPN.PRG
 *
 *    cShortName() - FilePath Long to Short (GetShortPathNameA())
 *
 *    Soporte a Funciones del Api de Windows
 *
 *    Andrade A. Daniel - 2002
 *    Rosario, Argentina
 *
 *    Libre Distribución
 */
	/*
 *    cShortName()
 */
	FUNCTION cShortName( cLong )
	    Local   cShort  := Space(164) + Chr(0)
    Local   nBuffer := 164
    Local   nLen
	    nLen    := GetSPName( cLong, @cShort, nBuffer )
	    cShort  := Left( cShort, nLen )
	RETURN( cShort )
	// Windows Api
DLL32 STATIC FUNCTION GetSPName( lpszLongPath AS STRING, lpszShortPath AS STRING, lBuffer AS LONG ) ;
      AS LONG PASCAL FROM "GetShortPathNameA" LIB "kernel32"


 

Link to comment
Share on other sites

Teste e veja o resultado:

#include "FiveWin.ch"
	Function Main()
	   PRIVATE cPRGPATH, cFILEPATH
   PRIVATE cDirProga := GETCURDIR()
   PRIVATE cDirJava
	   cPRGPATH := cFILEPATH(GETMODULEFILENAME(GETINSTANCE())) // .EXE
   cPRGPATH := cShortName(cPRGPATH)
	   cDirJava := "C:\DOWNLOAD\JAVAWS"
	   IF lIsDir( cDirJava )
	      lCHDIR( cDirJava )  // Para executar o Javaws
	      ? [JAVA IS OK IN: ], cDirJava
	   ENDIF
	   // Volto ao local do .exe
   lCHDIR(cPRGPATH)
	   ? [VOLTANDO DO JAVAWS ], cPRGPATH
	Return Nil
	/*
 *    SPN.PRG
 *
 *    cShortName() - FilePath Long to Short (GetShortPathNameA())
 *
 *    Soporte a Funciones del Api de Windows
 *
 *    Andrade A. Daniel - 2002
 *    Rosario, Argentina
 *
 *    Libre Distribución
 */
	/*
 *    cShortName()
 */
	FUNCTION cShortName( cLong )
	    Local   cShort  := Space(164) + Chr(0)
    Local   nBuffer := 164
    Local   nLen
	    nLen    := GetSPName( cLong, @cShort, nBuffer )
	    cShort  := Left( cShort, nLen )
	RETURN( cShort )
	// Windows Api
DLL32 STATIC FUNCTION GetSPName( lpszLongPath AS STRING, lpszShortPath AS STRING, lBuffer AS LONG ) ;
      AS LONG PASCAL FROM "GetShortPathNameA" LIB "kernel32"

Link to comment
Share on other sites

 

Bom dia.

Chame assim:

winexec("javaws.exe -jar d:\progs\esocial\EsocialSign.jar")

De preferência, mova-se para o diretório D:\PROGS\ESOCIAL e a partir daí execute o comando acima.

Excelente, essa eu não sabia:

<file.jar>
Nome do arquivo .jar a ser iniciado. É utilizado apenas com a opção -jar. O arquivo .jar denominado deve conter arquivos de classe e de recurso do aplicativo, com a classe de inicialização indicada pelo cabeçalho de manifest Main-Class.

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...