Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Abrir una aplicacion con un TButton (https://www.clubdelphi.com/foros/showthread.php?t=28740)

Drake 30-12-2005 14:51:22

Abrir una aplicacion con un TButton
 
wenas soy yo de nuevo xD perdonad por molestar tanto en este foro, ahora necesito saber k codigo tengo k introducir en un TButton para aprir una aplicacion k se encuentre en un determinado directorio algo asi como un vinculo a una aplicacion por cierto gracias a todas las respuestas de antes me estan siendo verdaderamente utiles para mi proyecto ^^.

Bicho 30-12-2005 15:15:32

Hola Drake, pásate por éste hilo a ver si te ayuda

http://www.clubdelphi.com/foros/showthread.php?t=28552

Saludos y Feliz Año Nuevo

[Gunman] 30-12-2005 15:19:34

Puedes hacerlo de 2 formas (alemnos que yo conozca) la que suelo utilizar es:
Código Delphi [-]
Winexec(Pchar('X:\Ruta\archivo.exe'),SW_SHOWNORMAL);
El primer parámetro de WinExeC es claro, se trata del nombre del programa ejecutable con la ruta incluida. El segundo parámetro indica como se ha de abrir el programa. SW_SHOWNORMAL lo muestra como se abre por defecto.
Aquí hay una lista con los parámetros con que puedes abrir la aplicación:
  1. SW_HIDE = 0;
  2. SW_SHOWNORMAL = 1;
  3. SW_NORMAL = 1;
  4. SW_SHOWMINIMIZED = 2;
  5. SW_SHOWMAXIMIZED = 3;
  6. SW_MAXIMIZE = 3;
  7. SW_SHOWNOACTIVATE = 4;
  8. SW_SHOW = 5;
  9. SW_MINIMIZE = 6;
  10. SW_SHOWMINNOACTIVE = 7;
  11. SW_SHOWNA = 8;
  12. SW_RESTORE = 9;
  13. SW_SHOWDEFAULT = 10;
  14. SW_MAX = 10;
La otra forma es con ShellExecute, que puede abrir cualquier tipo de archivo desde su programa por defecto. Este no lo he utilizado muchas veces, pero es bastante popular.
Para poder usar ShellExecute tienes que incluir la librería ShellAPI a tus uses, ya que esta función se encuentra en esta librería.
Luego es fácil de usar, te lo pongo tal y como está en Trucomania:
[/delphi]
ShellExecute(Form1.Handle,nil,PChar('c:\web\index.htm'),'','',SW_SHOWNORMAL);
[delphi]
De esta función no te puedo decir tanto, sólo que indagues por la librería ShellAPI y por Google.

dec 30-12-2005 15:19:45

Hola,

Me permito recuperar el mensaje que Bicho había borrado (tal vez porque se percató que se trataba de C++ Builder y no sobre Delphi) porque creo que la respuesta es válida tanto para Delphi como para C++ Builder. ;)

Bicho 30-12-2005 15:23:18

Perdona DEC ya lo he vuelto a modificar, tienes toda la razón.
Lo escribí antes de darme cuenta que era de C++ y no de Delphi. De todos modos busque en los foros de C++ y la función también es SehllExecute con lo cual parace que también sirve.

Gracias y disculpa las molestias

[Gunman] 30-12-2005 15:23:32

Yo no me habia dado cuenta de que estaba en el foro de C++ Builder... Lo siento, no se si sirve... :o

dec 30-12-2005 15:27:36

Hola,

Cita:

Empezado por Bicho
De todos modos busque en los foros de C++ y la función también es SehllExecute con lo cual parace que también sirve.

De hecho las funciones que mencionas pertenecen al API de Windows (Win32) y así existen para cualquier lenguaje que pueda acceder a dicho API. Tratándose de C++ Builder y Delphi... son como hermanos: comparten, por ejemplo, la VCL, lo que no es poco. ;)

Cita:

Empezado por Gunman
Yo no me habia dado cuenta de que estaba en el foro de C++ Builder... Lo siento, no se si sirve...

En este caso al menos sí que puede servir, por lo que digo arriba a Bicho. ;)

Bicho 30-12-2005 15:36:52

Bravo
 
Bravo bravísimo DEC, no habia caido en el tema del API de Windows y que Builder y Delphi compartieran la VCL.

Me quito el sombrero.

Muchas gracias y saludos

dec 30-12-2005 16:00:25

Hola,

Cita:

Empezado por Bicho
Me quito el sombrero.

¡Vuelve a ponértelo no sea que cogas un resfriado...! ;)

Bicho 30-12-2005 16:19:00

No, tranquilo DEC, pero gracias, ahora por suerte tenemos un sol espléndido :-) en la isla, no me hace falta el sombrero, pero al pringao de turno le toca trabajar hasta las 18 cuando toda la empresa se ha ido ya.

Saludos desde mi cubículo

dec 30-12-2005 19:07:22

Hola,

Cita:

Empezado por Bicho
(...) toca trabajar hasta las 18 cuando toda la empresa se ha ido ya.

¡O sea que hace ya más de una hora que estás fuera de tu cubículo, como lo dices! ¿Eh? Tempus fugit... ya lo he dicho... bueno,... y muchos más lo han notado y aun lo notarán. ;)

OSKR 30-12-2005 19:11:56

Siendo en C++ se puede usar la función system la cual ejecuta comando del SO, por eso se puede hacer system("X:\\Ruta\\archivo.exe"); e incluso darle sus parámetros ahí mismo

Saludos

dec 30-12-2005 19:25:07

Hola,

Cita:

Empezado por OSKR
Siendo en C++ se puede usar la función system la cual ejecuta comando del SO (...)

No te acostarás sin saber una cosa más. Gracias por esta OSKR. ;)

OSKR 30-12-2005 19:55:46

????
Siempre ayudarè en lo q mi tiempo me permita a la raza (gente de la borland :D)

Drake 31-12-2005 15:01:05

muchas gracias a todos por echarme una mano con esto por cierto sabriais hacer que se habra una aplicacion definida en un TEdit en otros palabras k se ejecute la direccion indicada en el Edit y tambien k si el archivo no se encuentra o falla al abrirse muestre un cuadro de advertencia gracias por todo y feliz año nuevo :P

dec 31-12-2005 19:05:49

Hola,

A ver si algo así te da alguna idea:

Código:

#include <Windows.hpp>
#include <ShellApi.hpp>

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  if (FileExists(Edit1->Text)) {
        ShellExecuteA(Handle,"open",Edit1->Text.c_str(),NULL,NULL,SW_SHOWNORMAL);
  } else {
        ShowMessage("Asegúrate de que existe el programa que quieres ejecutar");
  }
}


Drake 06-01-2006 17:51:48

wenas de nuevo todo funciona como keria pero al cargar una aplicacion con las anteriores llamadas la aplicacion k es llamada no puede cargar archivos de configuracion y demas es decir si ejecuto la aplicacion de forma normal todo bien pero si la llamo mediante codigo con un TButton o de cualkier otra forma mediante codigo en un evento falla la carga de los archivos llamados por la aplicacion k se ha llamado ¿por k sucede esto?

dec 08-01-2006 00:40:28

Hola,

Drake, te ha quedado un buen galimatías. Yo no entiendo ni los míos, así que ya me dirás. A ver. Si yo "llamo" a una aplicación, pongamos el bloc de notas, desde mi programa, haciendo uso de la función "ShellExecute", el que el bloc de notas "falle" no tiene que ver con mi "llamada" al mismo. Eso, o algo se escapa. ¿No podrías copiar el código fuente tal como estás tratando de utilizarlo? Creo que podría ser de mucha utilidad aquí. ;)

Drake 10-01-2006 16:28:43

No se eske segui mirando y nada si ejecuto el programa todo perfecto el programa lo k hace es ejecutar el siguiente codigo:

Código:

Memo1->Lines->LoadFromFile("datos.txt");
y en el memo1 me carga los datos k hay en el archivo datos.txt, pero si llamo a la aplicacion desde otro programa mediante el comando ShellExecute o System o Winexec al cargar el programa da un error diciendo k los datos no se han podido cargar o "datos.txt couldn't load" o algo asi, vamos en otras palabras la aplicacion me la carga bien pero no puede cargar datos exteriores, llevo dandole vueltas a eso pero nada.


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

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