Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-03-2015
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.460
Poder: 20
newtron Va camino a la fama
Error al ejecutar programa java con ShellExecute

Hola a tod@s.

Estoy intentando ejecutar un programa java con ShellExecute con la siguiente instrucción:

Código Delphi [-]
 ShellExecute(Handle,
               'open',
               'java',
               '-jar FirEleFa.jar D:\TEMP\A-000001.xml D:\TEMP\A-000001_Firmada.XML Explorer',
               nil,
               SW_SHOWNORMAL);

pero en vez de ejecutar el programa se me abre una ventana con la carpeta C:\WINDOWS\JAVA

Logicamente he probado desde la linea de comandos y lo hace correctamente.

¿Alguien sabe por qué tiene este comportamiento?
__________________
Be water my friend.
Responder Con Cita
  #2  
Antiguo 17-03-2015
jgutti jgutti is offline
Miembro
 
Registrado: may 2003
Posts: 189
Poder: 21
jgutti Va por buen camino
utilizo esta funciones para ejecutar rutinas java desde delphi:
Código Delphi [-]
uses ShellApi
function IsWinNT: boolean;
var
  OSV: OSVERSIONINFO;
begin
  OSV.dwOSVersionInfoSize := sizeof(osv);
  GetVersionEx(OSV);
  result := OSV.dwPlatformId = VER_PLATFORM_WIN32_NT;
end;
function ejecutarComando (comando : string) : string;
var
  Buffer: array[0..4096] of Char;
  si: STARTUPINFO;
  sa: SECURITY_ATTRIBUTES;
  sd: SECURITY_DESCRIPTOR;
  pi: PROCESS_INFORMATION;
  newstdin, newstdout, read_stdout, write_stdin: THandle;
  exitcod, bread, avail: Cardinal;
begin
  Result:= '';
  if IsWinNT then
  begin
    InitializeSecurityDescriptor(@sd, SECURITY_DESCRIPTOR_REVISION);
    SetSecurityDescriptorDacl(@sd, true, nil, false);
    sa.lpSecurityDescriptor := @sd;
  end
  else sa.lpSecurityDescriptor := nil;
  sa.nLength := sizeof(SECURITY_ATTRIBUTES);
  sa.bInheritHandle := TRUE;
  if CreatePipe(newstdin, write_stdin, @sa, 0) then
  begin
    if CreatePipe(read_stdout, newstdout, @sa, 0) then
    begin
      GetStartupInfo(si);
      with si do
      begin
        dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
        wShowWindow := SW_HIDE;
        hStdOutput := newstdout;
        hStdError := newstdout;
        hStdInput := newstdin;
      end;
      Fillchar(Buffer, SizeOf(Buffer), 0);
      GetEnvironmentVariable('COMSPEC', @Buffer, SizeOf(Buffer) - 1);
      StrCat(@Buffer,PChar(' /c ' + comando));
      if CreateProcess(nil, @Buffer, nil, nil, TRUE, CREATE_NEW_CONSOLE, nil, nil, si, pi) then
      begin
        repeat
          PeekNamedPipe(read_stdout, @Buffer, SizeOf(Buffer) - 1, @bread, @avail, nil);
          if bread > 0 then
          begin
            Fillchar(Buffer, SizeOf(Buffer), 0);
            ReadFile(read_stdout, Buffer, bread, bread, nil);
            Result:= Result + String(PChar(@Buffer));
          end;
          Application.ProcessMessages;
          GetExitCodeProcess(pi.hProcess, exitcod);
        until (exitcod <> STILL_ACTIVE) and (bread = 0);
      end;
      CloseHandle(read_stdout);
      CloseHandle(newstdout);
    end;
    CloseHandle(newstdin);
    CloseHandle(write_stdin);
  end;
end;

procedure TForm1.PostBtnClick(Sender: TObject);
begin
txtComando.Text:='c:\jdk1.7.0\bin\java -jar FirEleFa.jar D:\TEMP\A-000001.xml D:\TEMP\A-000001_Firmada.XML Explorer';
txtSalida.Text := ejecutarComando(txtComando.Text);

end;

Última edición por nlsgarcia fecha: 17-03-2015 a las 17:11:04. Razón: Sintaxis Delphi
Responder Con Cita
  #3  
Antiguo 17-03-2015
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.460
Poder: 20
newtron Va camino a la fama
jgutti.

Gracias por tu post. Tampoco me funciona de esta manera pero si me ha servido para darme cuenta de que el problema por lo visto es que tengo varias versiones de java instaladas y desde delphi se hace un pequeño lío a la hora de buscar el java.exe.

Cuando pongas código intenta ponerlo entre los delimitadores de DELPHI /DELPHI (entre corchetes) para que el código sea más legible.

Gracias de nuevo por tu respuesta y un saludo.
__________________
Be water my friend.
Responder Con Cita
  #4  
Antiguo 17-03-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Probaste pasando las rutas de los archivos entre ""?
Responder Con Cita
  #5  
Antiguo 17-03-2015
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.460
Poder: 20
newtron Va camino a la fama
Cita:
Empezado por AgustinOrtu Ver Mensaje
Probaste pasando las rutas de los archivos entre ""?
No, no le estaba poniendo rutas porque se supone que el java tiene que cogerlo del path. Lo que estoy haciendo para intentar resolver el conflicto de versiones es copiar el java a la carpeta de mi programa y ejecutarlo desde ahí.
__________________
Be water my friend.
Responder Con Cita
  #6  
Antiguo 20-07-2015
Avatar de darkerbyte
darkerbyte darkerbyte is offline
Miembro
 
Registrado: feb 2005
Posts: 196
Poder: 20
darkerbyte Va por buen camino
Mil Gracias jgutti tu función me ha servido excelente. Un saludo
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
error al ejecutar archivo java con ShellExecute danielmj Varios 2 18-12-2014 18:51:14
Error al ejecutar programa michellevalezka Conexión con bases de datos 4 14-03-2008 02:10:31
error al ejecutar parametros con ShellExecute JuanErasmo API de Windows 7 10-05-2007 23:27:26
Problemas con ShellExecute y Java. tryasta API de Windows 2 05-09-2005 19:09:41
Error de que falta una DLL al ejecutar mi programa Lionel Varios 1 02-07-2004 15:24:19


La franja horaria es GMT +2. Ahora son las 15:50:26.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi