SoloCodigo

Programación General => C/C++ => Visual C++ => Mensaje iniciado por: Burns en Jueves 6 de Enero de 2011, 15:25

Título: ¿Cúal es el codigo para abrir un archivo, .exe?
Publicado por: Burns en Jueves 6 de Enero de 2011, 15:25
Buenas. Quisiera saber cual es el codigo para abrir un archivo .exe desde un windows form mediante un boton, osea que cuando le des click al boton se abra un archivo definido.

Ahora bien por si no se ha entendido mucho, en este momente ya cree un windows form que funciona como un Launcher, donde apareceran noticias,etc,en mi caso es de un juego, y lo que quiero es que cuando el usuario de de click a un boton"Start" abra el cliente que es un .exe. En este caso uso el M.Visual c++ 2010.

PD: Si es posible podrian poner el codigo para que se cierre mediante el boton Boton2"exit".

Si lo pueden poner cualquiera de los dos ("aunque le doy prioridad al de abirir el .exe") se lo agradeceria mucho!

/*Edit*/
No se preocupen con eso de los botones y/o windows form,por si se confundieron,practicamente todo está hecho,solo me falta el enunciado Visual C++; que sirve para abrir un archivo .exe"en mi caso".
Título: Re: ¿Cúal es el codigo para abrir un archivo, .exe?
Publicado por: m0skit0 en Viernes 7 de Enero de 2011, 10:24
Código: C
  1. system("ruta_programa");
  2.  
Y eso se llama ejecutar, no abrir, y el fichero un ejecutable.

Saludos
Título: Re: ¿Cúal es el codigo para abrir un archivo, .exe?
Publicado por: pedro00pedro en Jueves 13 de Enero de 2011, 21:24
No te recomiendo lo que dicec m0skit0, esta bien y funciona, pero muestra la fea ventana de cmd, usa mejor:
Código: C++
  1. Process::Start("archivo.exe");
  2.  
Esto abrirá el proceso de forma limpia.
Yo lo he usado en varios proyectos, y tengo estas librerias incluidas, que creo que hacen falta.
Código: C++
  1. #include <shellapi.h>
  2. #using <System.dll>
  3.  
De todas formas busca en Google mas información sobre Process::Start para saber que necesitas exactamente y que argumentos puedes pasarle.
Título: Re: ¿Cúal es el codigo para abrir un archivo, .exe?
Publicado por: m0skit0 en Viernes 14 de Enero de 2011, 09:25
Mi forma es estándar, la que propones tú no lo es.
Título: Re: ¿Cúal es el codigo para abrir un archivo, .exe?
Publicado por: rfog en Sábado 22 de Enero de 2011, 19:58
Cita de: "m0skit0"
Mi forma es estándar, la que propones tú no lo es.

Y tu forma abrirá una consola, incializará el sistema de consola, lanzará la aplicación, cerrará el sistema de consola, perdiendo la relación padre/hijo que se puede tener con la forma descrita, con lo que todos los handles heredados y demás se perderán.
Título: Re: ¿Cúal es el codigo para abrir un archivo, .exe?
Publicado por: m0skit0 en Domingo 23 de Enero de 2011, 14:51
Eso que dices es en Windows. En Linux no abres ninguna consola. De todas formas, si lo que quieres es mantener una relación con el nuevo proceso abierto, personalmente me centraría en el estándar POSIX y sus llamadas al sistema (fork, execve, etc...), y no en un estándar cerrado de una única empresa que sólo funciona en un único SO.

Saludos.
Título: Re: ¿Cúal es el codigo para abrir un archivo, .exe?
Publicado por: rfog en Domingo 23 de Enero de 2011, 15:52
Claro, te mantienes en un estándar abierto pero usas cuadros de diálgo de windows, o peor aún, C++/CLI como está usando Burns... Con lo que usar el estándar POSIX tiene toda la razón del mundo.

Si en un programa .NET (no sólo C++/CLI) usas algo nativo, como las funciones del runtime de C que propones, eso significa varios cambios de contexto entre la máquina virtual .NET y el código nativo, en contra de usar la propia biblioteca de .NET, que hará el cambio de contexto cuando sea necesario...

Vamos, que haciendo un programa en C++/CLI tiene mucho sentido respetar los estándares...