Alain da Silva Posted January 8, 2018 Report Share Posted January 8, 2018 bom dia pessoal, eu preciso chamar um programa externo pelo meu programa. No caso seria esse: d:\progs\esocial\esocial.jar já tentei winexec("javaws.exe d:\progs\esocial\EsocialSign.jar"), já tirei o javaws.exe e também não vai. Qual a forma pra chamar esse arquivo? Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 8, 2018 Report Share Posted January 8, 2018 Eu não sou o Evandro, mas se eu fosse "jênio" (kkkkkkkkk) que nem ele, eu faria assim: cFile := cFilePath( GetModuleFileName( GetInstance() ) ) + ; "d:\progs\esocial\EsocialSign.jar" // D:\ tem que existir mermo. ACTION( WinExec( "javaws.exe " + cFile ) jfaguiar 1 Quote Link to comment Share on other sites More sharing options...
evandro Posted January 8, 2018 Report Share Posted January 8, 2018 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. ) /////////////////////////////////////////////////////////////////////////////////////// kapiaba 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 8, 2018 Report Share Posted January 8, 2018 Excelente alternativa Evandro, usando o Prompt de comando do rWindows. http://wiki.fivetechsoft.com/doku.php?id=fivewin_function_getinstance http://wiki.fivetechsoft.com/doku.php?id=fivewin_functions_alphabetically_ordered Abs. Quote Link to comment Share on other sites More sharing options...
Alain da Silva Posted January 8, 2018 Author Report Share Posted January 8, 2018 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. Quote Link to comment Share on other sites More sharing options...
Theotokos Posted January 8, 2018 Report Share Posted January 8, 2018 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. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 8, 2018 Report Share Posted January 8, 2018 Windows 10? Mostre na prática como você fez, via código. Quote Link to comment Share on other sites More sharing options...
Alain da Silva Posted January 8, 2018 Author Report Share Posted January 8, 2018 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. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 8, 2018 Report Share Posted January 8, 2018 Procure no google: javaws.exe não funciona no windows 10( pode ser que tenhas que instalar + alguma cousa ), ou tente com WaitRun ou outro comando de execução. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 8, 2018 Report Share Posted January 8, 2018 http://javafree.uol.com.br/topic-896033-Javaws-nao-executa-no-Windows-10-64bits.html tente com: ShellExecute(GetActiveWindow(),"open",'"'+cJavaWS+'"') Quote Link to comment Share on other sites More sharing options...
Alain da Silva Posted January 8, 2018 Author Report Share Posted January 8, 2018 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. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 8, 2018 Report Share Posted January 8, 2018 tente com: LCHDIR( cDirJavaWS ) SET PATH TO Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 8, 2018 Report Share Posted January 8, 2018 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" Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 8, 2018 Report Share Posted January 8, 2018 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" Quote Link to comment Share on other sites More sharing options...
Alain da Silva Posted January 8, 2018 Author Report Share Posted January 8, 2018 resposta: d:\progs\esocial\ Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 8, 2018 Report Share Posted January 8, 2018 resposta: d:\progs\esocial\ Está correto. Agora ponha o comando que chama o JAVAWS com WaitRun() ou Winexec(). E veja o que acontece. pois, você está na pasta certa. ok? Se não funfar, teste em wum windows 7 de 32 bits para tirar a dúvida. abs. Quote Link to comment Share on other sites More sharing options...
evandro Posted January 8, 2018 Report Share Posted January 8, 2018 Olá Creio faltar o caminho do executável cComando:="c:\pasta_java\javaws.exe d:\progs\esocial\EsocialSign.jar" MyRun( cComando ) return nil Quote Link to comment Share on other sites More sharing options...
leo@lhsistemas.com Posted January 10, 2018 Report Share Posted January 10, 2018 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. kapiaba 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 10, 2018 Report Share Posted January 10, 2018 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. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.