Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ejecutar un .exe (https://www.clubdelphi.com/foros/showthread.php?t=44407)

jorgegetafe 05-06-2007 21:58:46

Ejecutar un .exe
 
Me gustaría hacer que al presionar un botón se ejecutase un programa de mi ordenador, es decir, un ejecutable (*.exe) del que se su ruta exacta. ¿Es posible? ¿cual es el código?

Muchas gracias.

roman 05-06-2007 22:00:24

Busca WinExec o ShellExecute en los foros.

// Saludos

jorgegetafe 05-06-2007 22:05:12

gracias, saludos

jorgegetafe 05-06-2007 22:09:56

Vale ya se hacerlo:

WinExec(PChar('notepad.exe'),SW_SHOWNORMAL);

Pero como sabe donde está el programa? acaso lo busca? no entiendo como lo hace...

dec 05-06-2007 22:11:55

Hola,

Windows tratará de localizar el programa en el directorio activo, en el del propio Windows, en "System" ó "System32", entre otros...

Pero, generalmente, indicamos la ruta completa del programa a ejecutar.

jorgegetafe 05-06-2007 22:14:50

Y para ejecutar IE? no se donde está su ejecutable, no quiero poner una página en concreto sino la que tenga el usuario como "home"

seoane 05-06-2007 22:29:58

:cool: Prueba con esto:
Código Delphi [-]
ShellExecute(0,nil,'about:home',nil,nil,SW_SHOW);

Acuerdate de agregar ShellApi a las uses

maeyanes 05-06-2007 22:30:06

Cita:

Empezado por dec
Hola,

Windows tratará de localizar el programa en el directorio activo, en el del propio Windows, en "System" ó "System32", entre otros...

Pero, generalmente, indicamos la ruta completa del programa a ejecutar.

También en el registro se guardan las rutas de las aplicaciones, específicamente bajo la clave: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

Por ejemplo Internet Explorer tiene un alias específico bajo esta clave, por lo cual si hace un WinExec(PChar('IEXPLORE.EXE'), SW_SHOWNORMAL); te debería abrir sin problemas el IE con su página Home...


Saludos...

roman 05-06-2007 22:33:13

Una opción:

Código Delphi [-]
ShellExecute(0, 'open', 'iexplore.exe', nil, nil, SW_SHOW);

Otra opción (la aprendí hoy del compañero cHackAll )

Código Delphi [-]
var
  IE: OleVariant;

begin
  IE := ComObj.CreateOleObject('InternetExplorer.Application');
  IE.GoHome;
  IE.Visible := true;
end;

// Saludos

roman 05-06-2007 22:34:36

Bueeeeno, ¿se puede saber por qué pasan "horas" y nadie contesta y cuando lo hago se me adelantan?

:p :D

// Saludos

maeyanes 05-06-2007 22:36:17

Cita:

Empezado por roman
Bueeeeno, ¿se puede saber por qué pasan "horas" y nadie contesta y cuando lo hago se me adelantan?

:p :D

// Saludos

Bueno, en algún momento te tenía que pasar lo que nos ha pasado a otros con respecto a ti... :D :p

roman 05-06-2007 22:38:36

Está bueno, vale para tí. :D

seoane, ¿tú que justificación das? :D :D

// Saludos

seoane 05-06-2007 22:38:36

Pero no se quejara, ya le dimos 4 maneras de hacerlo. Y si me apuras le saco alguna mas :p :D

seoane 05-06-2007 22:39:26

Cita:

Empezado por roman
seoane, ¿tú que justificación das? :D :D

Fue a hablar el que siempre me pisa las respuestas :D

jorgegetafe 05-06-2007 22:40:57

Muchas gracias a todos, me va de lujo ;-) esto tiene bastante utilidad. :D

seoane 05-06-2007 22:43:41

Y lo prometido es deuda, hay va otra forma de hacerlo :p

Esta función devuelve la ruta del navegador predeterminado:
Código Delphi [-]
uses Registry;

function Navegador: string;
var
  Cliente: String;
begin
  Result:= '';
  with TRegistry.Create do
  try
    RootKey:= HKEY_LOCAL_MACHINE;
    Cliente:= '';
    if OpenKey('\SOFTWARE\Clients\StartMenuInternet' ,FALSE) then
    begin
      Cliente:= ReadString('');
      CloseKey;
    end;
    if OpenKey('\SOFTWARE\Clients\StartMenuInternet\' + Cliente + '\shell\open\command' ,FALSE) then
    begin
      Result:= ReadString('');
      CloseKey;
    end;
  finally
    Free;
  end;
end;

roman 05-06-2007 22:47:52

Yo voto por esta última. Es la que más respeta la desición del usuario.

// Saludos

roman 05-06-2007 23:03:39

seoane,

el segundo if, ¿no vendría mejor anidarlo en el primero?

// Saludos

seoane 06-06-2007 00:02:02

Cita:

Empezado por roman
seoane, el segundo if, ¿no vendría mejor anidarlo en el primero?

Por poder se puede ...

Código Delphi [-]
uses Registry;

function Navegador: string;
var
  Cliente: String;
begin
  Result:= '';
  with TRegistry.Create do
  try
    RootKey:= HKEY_LOCAL_MACHINE;
    if OpenKey('\SOFTWARE\Clients\StartMenuInternet' ,FALSE) then
    begin
      Cliente:= ReadString('');
      CloseKey;
      if OpenKey('\SOFTWARE\Clients\StartMenuInternet\' + Cliente + '\shell\open\command' ,FALSE) then
      begin
        Result:= ReadString('');
        CloseKey;
      end;
    end;    
  finally
    Free;
  end;
end;

¿mejor? :p

roman 06-06-2007 00:08:13

Yo "nomás" decía. Porque si el primer condicional falla, como que el segundo ya venía sobrando :p

// Saludos


La franja horaria es GMT +2. Ahora son las 04:36:06.

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