|
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
c-guedes Profissional
Registrado: Terça-Feira, 31 de Mai de 2005 Mensagens: 502
|
Enviada: Ter Out 22, 2019 6:15 pm Assunto: Como saber a Versão Java pelo Delphi |
|
|
Boa noite devs, estou precisando saber a versão do java instalado na maquina pelo delphi, ter o retorno da versão consegui uma function porem não esta dando certo quando o comando é java -version, outros comandos do CMD até que dão certo, entretanto esse não, segue abaixo o código utilizado:
Código: |
function TForm2.GetDosOutput(CMD: string; Diretorio: string = 'C:\'): string;
var
SA: TSecurityAttributes;
SI: TStartupInfo;
PI: TProcessInformation;
StdOutPipeRead, StdOutPipeWrite: THandle;
Handle, WasOK: Boolean;
Buffer: array[0..255] of AnsiChar;
BytesRead: Cardinal;
lStartUpInfo:TStartUpInfo;
begin
Result := '';
SA.nLength := SizeOf(SA);
SA.bInheritHandle := True;
SA.lpSecurityDescriptor := nil;
CreatePipe(StdOutPipeRead, StdOutPipeWrite, @SA, 0);
try
FillChar(SI, SizeOf(SI), 0);
SI.cb := SizeOf(SI);
SI.dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
SI.wShowWindow := SW_HIDE;
SI.hStdInput := GetStdHandle(STD_INPUT_HANDLE);
SI.hStdOutput := StdOutPipeWrite;
SI.hStdError := StdOutPipeWrite;
Handle := CreateProcess(nil, PChar('cmd.exe /c ' + CMD), nil, nil, True, 0, nil, pchar(Diretorio), SI, PI);
CloseHandle(StdOutPipeWrite);
if Handle then
try
repeat
WasOK := ReadFile(StdOutPipeRead, Buffer, 255, BytesRead, nil);
if BytesRead > 0 then begin
Buffer[BytesRead] := #0;
Result := Result + String(Buffer);
end;
until not WasOK or (BytesRead = 0);
WaitForSingleObject(PI.hProcess, INFINITE);
finally
CloseHandle(PI.hThread);
CloseHandle(PI.hProcess);
end;
finally
CloseHandle(StdOutPipeRead);
end;
end;
//Chamada da proc para um Memo
procedure TForm2.Button1Click(Sender: TObject);
begin
//WinExec('java -version .\resultadoLista.txt', SW_HIDE);
Memo1.Text := GetDosOutput('Java -version', 'C:\');
|
se usar o comando dir por exemplo funciona certinho. _________________ Camargo Felis Guedes
"Posso todas as coisas naquele que me fortalece" flp. 4:13 |
|
Voltar ao Topo |
|
|
joemil Moderador
Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9098 Localização: Sinop-MT
|
Enviada: Qua Out 23, 2019 8:39 am Assunto: |
|
|
tenta por o comando com aspas duplas:
_________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
Voltar ao Topo |
|
|
c-guedes Profissional
Registrado: Terça-Feira, 31 de Mai de 2005 Mensagens: 502
|
Enviada: Qui Out 24, 2019 11:56 am Assunto: |
|
|
ei Joemil, não deu certo continua retornando:
'java' não ‚ reconhecido como um comando interno
ou externo, um programa operável ou um arquivo em lotes. _________________ Camargo Felis Guedes
"Posso todas as coisas naquele que me fortalece" flp. 4:13 |
|
Voltar ao Topo |
|
|
johnny-walker Moderador
Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Qui Out 24, 2019 12:02 pm Assunto: |
|
|
Tente pelo registro:
Código: | Versao 32 bits
HKEY_LOCAL_MACHINE\Software\JavaSoft\Java
Versao 64
Computador\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\JreMetrics
Outra forma
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\4D375FC7688C45F56B7D260BDAF4D39D
Outra forma seria pegar a versão do arquivo:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Applications\javaw.exe
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\jarfile\shell\open\command
HKEY_USERS\S-1-5-21-3819459212-2013315343-1445593015-1002\Software\Microsoft\Windows\CurrentVersion\Search\RecentApps\{23AF0B26-6145-4917-A118-8A656C3BD540}
|
Com isto é suficiente para você pegar a versão sem coisas muito complicadas.
bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I |
|
Voltar ao Topo |
|
|
c-guedes Profissional
Registrado: Terça-Feira, 31 de Mai de 2005 Mensagens: 502
|
Enviada: Qui Out 24, 2019 2:25 pm Assunto: |
|
|
eu esteava executando pelo CMD, mas passei direito e deu certo:
peguei o caminho da java_home e completei o para formar o comando completo e deu certo
"C:\Program Files\Java\jdk1.8.0_111\bin\java.exe -version" _________________ Camargo Felis Guedes
"Posso todas as coisas naquele que me fortalece" flp. 4:13 |
|
Voltar ao Topo |
|
|
c-guedes Profissional
Registrado: Terça-Feira, 31 de Mai de 2005 Mensagens: 502
|
Enviada: Qui Out 24, 2019 2:39 pm Assunto: |
|
|
ficou assim:
Código: |
function TForm2.GetDosOutput(CMD: string; Diretorio: string = 'C:\'): string;
var
SA: TSecurityAttributes;
SI: TStartupInfo;
PI: TProcessInformation;
StdOutPipeRead, StdOutPipeWrite: THandle;
Handle, WasOK: Boolean;
Buffer: array[0..255] of AnsiChar;
BytesRead: Cardinal;
lStartUpInfo:TStartUpInfo;
begin
Result := '';
SA.nLength := SizeOf(SA);
SA.bInheritHandle := True;
SA.lpSecurityDescriptor := nil;
CreatePipe(StdOutPipeRead, StdOutPipeWrite, @SA, 0);
try
FillChar(SI, SizeOf(SI), 0);
SI.cb := SizeOf(SI);
SI.dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
SI.wShowWindow := SW_HIDE;
SI.hStdInput := GetStdHandle(STD_INPUT_HANDLE);
SI.hStdOutput := StdOutPipeWrite;
SI.hStdError := StdOutPipeWrite;
Handle := CreateProcess(nil, PChar(GetEnvironmentVariable('JAVA_HOME') + CMD), nil, nil, True, NORMAL_PRIORITY_CLASS, nil, pchar(Diretorio), SI, PI);
CloseHandle(StdOutPipeWrite);
if Handle then
try
repeat
WasOK := ReadFile(StdOutPipeRead, Buffer, 255, BytesRead, nil);
if BytesRead > 0 then begin
Buffer[BytesRead] := #0;
Result := Result + String(Buffer);
end;
until not WasOK or (BytesRead = 0);
WaitForSingleObject(PI.hProcess, INFINITE);
finally
CloseHandle(PI.hThread);
CloseHandle(PI.hProcess);
end;
finally
CloseHandle(StdOutPipeRead);
end;
end;
{ Chamada da Function}
procedure TForm2.Button1Click(Sender: TObject);
begin
Memo1.text := GetDosOutput('\bin\java.exe -version', 'C:\');
//Memo1.text := GetDosOutput(' java.exe -version 2', $(JAVA_HOME)');
|
a mesma sera simplificada uma vez que será utilizada somente para a versão do java. _________________ Camargo Felis Guedes
"Posso todas as coisas naquele que me fortalece" flp. 4:13 |
|
Voltar ao Topo |
|
|
marcieldeg Colaborador
Registrado: Terça-Feira, 5 de Abril de 2011 Mensagens: 1054 Localização: Vitória - ES
|
|
Voltar ao Topo |
|
|
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|