Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Duda sobre integracion de programas (https://www.clubdelphi.com/foros/showthread.php?t=69063)

TheJoker 23-07-2010 17:55:15

Duda sobre integracion de programas
 
Hola a todos, tengo una duda ya que la aplicacion que estoy desarrollando, en algunos pasos requiere de otra herramienta externa, mi pregunta es como crear un .exe que contenga mi programa y las herramientas que necesito.

Salu2.

sferron1 23-07-2010 20:03:12

Duda sobre integracion de programas
 
Cita:

Empezado por TheJoker (Mensaje 371357)
Hola a todos, tengo una duda ya que la aplicacion que estoy desarrollando, en algunos pasos requiere de otra herramienta externa, mi pregunta es como crear un .exe que contenga mi programa y las herramientas que necesito.

Salu2.

Si por herramienta externa te refieres a ejecutables, una de las formas de disparar desde Delphi es utilizando la función shellexecute. Has de meter en el uses ShellApi. Mírate la ayuda. Hay mil ejemplos en internet.

Algo así
Código Delphi [-]
procedure TForm1.TrV_ProtocoloMouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
    cLink:string;
begin
     with Sender as TTreeView do
     begin
               try
                    cLink:=Selected.Text;
                    if Trim(cLink)<>'' then
                    begin
                         if (LowerCase(ExtractFileExt(cLink))='.exe') or
                            (LowerCase(ExtractFileExt(cLink))='.com') or
                            (LowerCase(ExtractFileExt(cLink))='.bat') then
                              ShellExecute(Application.Handle,'open',pchar(cLink),nil,pchar(ExtractFilePath(cLink)),SW_SHOWNORMAL)
                    end;
               except
                     ShowMessage('No ha funcionado')
               end;
     end;
end;

Saludos

TheJoker 23-07-2010 20:15:30

Lo que yo tengo es esto:
Código Delphi [-]
begin
  if ShellExecute(Form1.Handle, nil, 'archivo.exe',
   nil, nil, SW_HIDE) <= 32 then
 Application.MessageBox('No se pudo ejecutar la aplicación',
   'Error', MB_ICONEXCLAMATION);
end;

Como veras el archivo lo tengo dentro del proyecto, pero cuando construyo todo el ejecutable, la herramienta corre bien pero si lo cambio de lugar no funciona (el boton que ejecuta la utilidad). Lo que quiero saber es como puedo añadir la utilidad (archivo.exe) a la aplicacion que cree, y de esa forma la puedo llevar a cualquier maquina y va a andar bien.

Salu2.

sferron1 24-07-2010 09:36:45

Duda sobre integracion de programas
 
Cita:

Empezado por TheJoker (Mensaje 371384)
Como veras el archivo lo tengo dentro del proyecto, pero cuando construyo todo el ejecutable, la herramienta corre bien pero si lo cambio de lugar no funciona (el boton que ejecuta la utilidad). Lo que quiero saber es como puedo añadir la utilidad (archivo.exe) a la aplicacion que cree, y de esa forma la puedo llevar a cualquier maquina y va a andar bien.

Thejoker, a veces la terminología hace complicada la comprensión de algo que, en definitiva, es simple. Por ejemplo, no comprendo qué significa para ti tener el archivo exe dentro del proyecto. Seguro que me estoy perdiendo algo.
Mira, hasta donde yo sé, ShellExecute se comporta como un lanzador del sistema. Por lo tanto, vendría a ser algo así como utilizar la línea de comandos de Windows (Inicio/Ejecutar). El funcionamiento es simple: lo que pretendas ejecutar ha de estar localizable por el sistema. Es decir, si es un exe ha de contener el path completo o bien estar en la variable de entorno que rige el path.
Es decir, si archivo.exe define el ejecutable que quieres lanzar, entonces archivo.exe ha de estar en el mismo directorio (carpeta) que el ejecutable de tu aplicación, o bien tener definido en la variable de entorno el path donde se encuentra archivo.exe, o bien en la función ShellExecute especificar todo el path (algo así como 'c:\Archivos de programas\.....\archivo.exe').
Se me ocurre que este debe ser el problema.
Saludos.

TheJoker 24-07-2010 16:42:36

Disculpa soy medio novato en esto.

Ya comprendi, muchas gracias.

Salu2.


La franja horaria es GMT +2. Ahora son las 18:56:59.

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