Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-05-2008
jmgc1982 jmgc1982 is offline
Miembro
 
Registrado: abr 2008
Posts: 19
Poder: 0
jmgc1982 Va por buen camino
Question Como ejecutar un programa externo.

Buenas a todos!

Me gustaría saber como se puede ejecutar un archivo .exe (ejecutable), especificando su directorio o path, ya que en la ayuda de builder c++ solo he encontrado shellexecute y winexec, per una de dos: o no me va bien, o no los utilizo correctamente...




Muchas gracias a todos!
Responder Con Cita
  #2  
Antiguo 27-05-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.267
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Muestranos cómo las estás ejecutando; Coloca algo de código y tal vez sea más fácil ayudarte. Esas funciones van perfectamente (salgo que tu caso sea algo muy raro).
Explica porqué no te funcionan o el error que te da.

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 27-05-2008
jmgc1982 jmgc1982 is offline
Miembro
 
Registrado: abr 2008
Posts: 19
Poder: 0
jmgc1982 Va por buen camino
Wink Ya esta...

Ufff...

Al final lo logre...

ShellExecute(Handle, "open", "C:\\WINDOWS\\system32\\cmd.exe", 0, 0, SW_SHOWNORMAL) ;

me fallaba las dobles barras c:\\ , ya que si ponia el path con barra simple no me salia bien.

De todas formas ahora tengo un problema mucho más complicado...

En builder he colocado un Edit, para que el usuario ponga un texto.

En el momento que presiona un botón, se ejecuta el cmd de windows, pero quiero pasarle un comando para que se ejecute en el momento de abrirlo.

Y sobre todo no se como enviar este comando, que en su interior tiene el texto que se ha escrito en el Edit.

Como podría hacer eso desde builder???

Muchisimas Gracias...
Responder Con Cita
  #4  
Antiguo 27-05-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
En caso de pasar comandos al cmd, como dices que quieres hacer, el problema lo tendrás en la sincronización. Es decir, cuando termina uno para pasar el siguiente?

Quizás sea mas fácil escribir un archivo.bat desde Builder y ejecutarlo después. de esa forma cada comando se ejecutará cuando le toque...

Saludos.
Responder Con Cita
  #5  
Antiguo 29-05-2008
jmgc1982 jmgc1982 is offline
Miembro
 
Registrado: abr 2008
Posts: 19
Poder: 0
jmgc1982 Va por buen camino
Wink Ejecutar programa externo...

Y como creo un BAT dentro de builder y lo enlazo al botón???

Y ya de paso, que código le pongo al BAT para que me cumpla esa función...

Hace años que no hecho uno
Responder Con Cita
  #6  
Antiguo 29-05-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por jmgc1982 Ver Mensaje
Y como creo un BAT dentro de builder y lo enlazo al botón???

Y ya de paso, que código le pongo al BAT para que me cumpla esa función...

Hace años que no hecho uno
Un archivo.bat no es ni mas ni menos que un archivo de texto con los comandos que escribiriías en el cmd.exe y con la extensión .bat. Windows los considera ejecutables. ¿Que comandos tienes que escribir?. Pues los que pensabas pasar al cmd.
¿Como los creas?, pues repasa las funciones de C para escribir archivos de texto o la clase fstream.
Tambien puedes usar las funciones de fichero de las API de Windows.

¿Como lo ejecutas? Como un ejecutable mas.
Código:
ShellExecute(Handle, "open", "archivo.bat", 0, 0, SW_SHOWNORMAL) ;
Saludos.

Última edición por escafandra fecha: 29-05-2008 a las 16:52:54.
Responder Con Cita
  #7  
Antiguo 29-05-2008
Avatar de Negriz
Negriz Negriz is offline
Miembro
 
Registrado: feb 2008
Ubicación: Some were inside Colombia
Posts: 123
Poder: 17
Negriz Va por buen camino
y si usas sytem("comando"); ???
a mi me funcino para ejecutar comandos de la consola desde un boton en c++ builder.
Responder Con Cita
  #8  
Antiguo 31-05-2008
jmgc1982 jmgc1982 is offline
Miembro
 
Registrado: abr 2008
Posts: 19
Poder: 0
jmgc1982 Va por buen camino
Question Ejecutar comando CMD desde builder...

Buenas,

Al final pude crear el BAT. Lo cree con la forma de que cuando se ejecuta, si le paso el parametro %1 con el texto del edit, va OK.

Ejemplo:

Microsoft Windows XP [Versión 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\>dato.bat "parametro %1" (sin comillas, aqui iria el texto del edit)

Pero el gran problema que tengo, es que como paso el texto del edit a la posición del parámetro, ya que de esta forma haciendo un system("c:\\dato.bat "texto edit" ") ya lo tendría solucionado...

Gracias a todos.
Responder Con Cita
  #9  
Antiguo 31-05-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Bueno, puedes ejecutar comandos directamente con system. La pega el que no tienes control sobre la ventana del cmd que se abre. Se abre, ejecuta y cierra directamente. Si la quieres dejar abierta, no se si es tu caso aunque me parece que es tu deseo, entonces la tecnica del bat es mas adecuada.

Puedes crear un bat en el que escribes los comandos desde el edit y luego lo ejecutas. Si sólo te interesa un comando cada vez, pues el bat lo creas con un solo comando. Si no te interesa mantener abierta la ventana del cmd, una vez ejecutado tu comando, pues simplemente utiliza system.

ejemplo:
archivo.bat
Código:
c:
cd micarpeta
dir
pause
con el comando pause, consigues congelar el bat hasta que pulses una tecla...

No te hace falta el parámetro genérico %1, simplemente lo escribes en un archivo con el nombre que quieras.bat. Luego lo ejecutas con system o con ShellExecute.

Espero aclararte tus dudas. Saludos.
Responder Con Cita
  #10  
Antiguo 02-06-2008
jmgc1982 jmgc1982 is offline
Miembro
 
Registrado: abr 2008
Posts: 19
Poder: 0
jmgc1982 Va por buen camino
Exclamation Ejecutar CMD...

Buenas,

Gracias por el consejo escafandra, ejecutar un comando desde un bat y desde builder C++ con system(), se como hacerlo.

Pero sobre lo que escribistes:

" Puedes crear un bat en el que escribes los comandos desde el edit y luego lo ejecutas."

Esto es lo que me gustaria saber, Como pasar el texto del edit hacia el CMD...

Por ejemplo:

Poniedo en el edit d: ; Con system("DIR X") y en el sitio de "X" poner el contenido del edit (D. Así cuando ejecuto, se ejecuta el CMD y hace un dir a la unidad escrita en el edit (C:, D:, etc...)

Gracias!!!
Responder Con Cita
  #11  
Antiguo 02-06-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Escribes el archivo.bat, por ejemplo así:

Código:
    
#include <ios.h>
#include <fstream.h>
.
.
.
   fstream fs("archivo.bat", ios::out | ios::trunc);
    if(fs.fail()){
      AnsiString Msg = "Imposible escribir el fichero ";
      Application->MessageBox("Imposible escribir el fichero ", MB_ICONEXCLAMATION);
    }
    else{
      fs << Edit1->Text << endl;
      fs << "pause" << endl;
      fs.close():
    }
No es la única forma de escribir un archivo, hazlo como lo quieras...

Saludos.

EDITO:
Cita:
Empezado por jmgc1982 Ver Mensaje
Por ejemplo:

Poniedo en el edit d: ; Con system("DIR X") y en el sitio de "X" poner el contenido del edit (D. Así cuando ejecuto, se ejecuta el CMD y hace un dir a la unidad escrita en el edit (C:, D:, etc...)

Gracias!!!
pues en este caso sería:

Código:
    .
    .
    .
    else{
      AnsiString Cadena = (AnsiString)"dir " + Edit1->Text;
      fs << Cadena  << endl;
      fs << "pause" << endl;
      fs.close():
    }

Última edición por escafandra fecha: 02-06-2008 a las 17:11:20.
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
Ejecutar programa externo con Lazarus abelaquino Lazarus, FreePascal, Kylix, etc. 1 12-05-2008 09:37:35
Ejecutar programa externo desde PHP fide PHP 10 07-02-2008 21:21:54
programa externo hugoacosta API de Windows 2 17-04-2006 19:44:57
Como usar una función de un programa externo xer0-q Providers 0 17-12-2005 15:53:48
Ejecutar un programa externo desde un programa de Delphi Roger_Fernandez Varios 3 02-09-2004 18:05:36


La franja horaria es GMT +2. Ahora son las 19:54:30.


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