Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-02-2019
mblascog mblascog is offline
Miembro
 
Registrado: may 2006
Posts: 131
Poder: 18
mblascog Va por buen camino
Saber ruta de un exe

Buenas, he creado una simple aplicación para que abra un fichero dwg con edrawings.
Todos los usuarios tienen instalado este programa, pero por los motivos que sean, no todos están en la misma ruta.
Existe la manera de saber la ruta de un programa, no sé cómo lo hace cortana, o bien tengo que leer el registro?

Muchas gracias
Responder Con Cita
  #2  
Antiguo 07-02-2019
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.457
Poder: 20
newtron Va camino a la fama
Si tienes asociado en windows el archivo con el programa que lo abre solo tienes que usar la función "ShellExecute" para abrir el archivo con el programa predeterminado esté donde esté.


p.e.


Código Delphi [-]
    ShellExecute(Handle, 'open', PChar(Archivo), '', '', SW_SHOW);


Saludos
__________________
Be water my friend.
Responder Con Cita
  #3  
Antiguo 07-02-2019
mblascog mblascog is offline
Miembro
 
Registrado: may 2006
Posts: 131
Poder: 18
mblascog Va por buen camino
Ohhh!!! muchas gracias Newton, cuando llegue a casa lo pruebo y te digo qué tal!!!
Responder Con Cita
  #4  
Antiguo 09-02-2019
mblascog mblascog is offline
Miembro
 
Registrado: may 2006
Posts: 131
Poder: 18
mblascog Va por buen camino
Gracias Newton, no siempre el visualizador es el programa predeterminado, en algunos usuarios sí, en otros no. Y no es por capricho, los diseñadores les interesa ir al explorador de archivos y con doble click abrir directamente el Autocad. Abren muchos ficheros al día y sería fastidiarles si cada vez tuvieran que ir botón derecho - abrir con
Por lo tanto, si alguien sabe cómo buscar el programa en el pc y ejecutarlo.
Responder Con Cita
  #5  
Antiguo 09-02-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Lo que has preguntado es lo que te han respondido.
Lo que dices del explorador de windows no tiene nada que ver con el programa que tú has hecho.
Así que tendrás que aclararnos exactamente qué es lo que quieres.
Responder Con Cita
  #6  
Antiguo 09-02-2019
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.485
Poder: 20
MAXIUM Va camino a la fama
Responder Con Cita
  #7  
Antiguo 09-02-2019
mblascog mblascog is offline
Miembro
 
Registrado: may 2006
Posts: 131
Poder: 18
mblascog Va por buen camino
Buenas, quizás no me he explicado, pero la respuesta no responde a mi pregunta.

Yo quiero que mi programita Delphi abra el fichero dwg con el programa edrawings, y no con otro

Este código:
[delphi]
ShellExecute(Handle, 'open', PChar(Archivo), '', '', SW_SHOW);/DELPHI]
abre el archivo dwg con el programa predeterminado, y yo necesito que sea el edrawings.

Antes, he intentado explicar porqué unos usuarios tienen edrawings como visualizador predeterminado y otros no.
La explicación que he dado antes, es que los diseñadores de la empresa, abren muchos ficheros dwg durante la jornada, y lo hacen desde el explorador de las Windows, con doble clic, y se abre Autocad, que lo tiebe como predeterminado.

Por lo tanto, como puedo ejecutar edrawings, desde Delphi, sin saber la ruta exacta donde se encuentra (dependiendo de los programas que tengas instalados, se encuentra en una ruta o otra)
Espero haberme explicado bien

Muchas gracias
Responder Con Cita
  #8  
Antiguo 09-02-2019
Avatar de look
look look is offline
Miembro
 
Registrado: sep 2007
Ubicación: The Shire
Posts: 656
Poder: 17
look Va camino a la fama
Cita:
Empezado por mblascog Ver Mensaje
Buenas, quizás no me he explicado, pero la respuesta no responde a mi pregunta.

Yo quiero que mi programita Delphi abra el fichero dwg con el programa edrawings, y no con otro

Este código:
[delphi]
ShellExecute(Handle, 'open', PChar(Archivo), '', '', SW_SHOW);/DELPHI]
abre el archivo dwg con el programa predeterminado, y yo necesito que sea el edrawings.

Antes, he intentado explicar porqué unos usuarios tienen edrawings como visualizador predeterminado y otros no.
La explicación que he dado antes, es que los diseñadores de la empresa, abren muchos ficheros dwg durante la jornada, y lo hacen desde el explorador de las Windows, con doble clic, y se abre Autocad, que lo tiebe como predeterminado.

Por lo tanto, como puedo ejecutar edrawings, desde Delphi, sin saber la ruta exacta donde se encuentra (dependiendo de los programas que tengas instalados, se encuentra en una ruta o otra)
Espero haberme explicado bien

Muchas gracias

Código Delphi [-]

ShellExecute(Handle, nil, PChar('dwg.exe'),  PChar(Archivo) ,  nil, SW_SHOWNORMAL)
__________________
all your base are belong to us
Responder Con Cita
  #9  
Antiguo 09-02-2019
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.485
Poder: 20
MAXIUM Va camino a la fama
Cita:
Empezado por mblascog Ver Mensaje
Buenas, quizás no me he explicado, pero la respuesta no responde a mi pregunta.

Yo quiero que mi programita Delphi abra el fichero dwg con el programa edrawings, y no con otro

Este código:
[delphi]
ShellExecute(Handle, 'open', PChar(Archivo), '', '', SW_SHOW);/DELPHI]
abre el archivo dwg con el programa predeterminado, y yo necesito que sea el edrawings.

Antes, he intentado explicar porqué unos usuarios tienen edrawings como visualizador predeterminado y otros no.
La explicación que he dado antes, es que los diseñadores de la empresa, abren muchos ficheros dwg durante la jornada, y lo hacen desde el explorador de las Windows, con doble clic, y se abre Autocad, que lo tiebe como predeterminado.

Por lo tanto, como puedo ejecutar edrawings, desde Delphi, sin saber la ruta exacta donde se encuentra (dependiendo de los programas que tengas instalados, se encuentra en una ruta o otra)
Espero haberme explicado bien

Muchas gracias
Quizás leyendo los valores de instalación en el registro de Windows

HKEY_CURRENT_USER\Software\eDrawings\e2019\InstallDir

Así obtienes la ruta de eDrawings.exe y EModelViewer.exe, la cual puedes usar con ShellExecute. O ejecutar eDrawings.exe + "ruta\nombre.dwg"

Última edición por MAXIUM fecha: 09-02-2019 a las 20:54:01.
Responder Con Cita
  #10  
Antiguo 17-02-2019
mblascog mblascog is offline
Miembro
 
Registrado: may 2006
Posts: 131
Poder: 18
mblascog Va por buen camino
Gracias por la respuesta, y parece que vaya buscando los problemas, pero eDrawings, dependiendo de la versión tiene una o otra entrada en el registro.
Se me ha ocurrido, como solución rápida y no tener que ir cambiando el programa según las versiones de Delphi, de crear un acceso directo a la C:\ de cada pc, y desde delphi, si se puede, intentar ejecutar este acceso directo.

Informaré del resultado. Muchas gracias de nuevo
Responder Con Cita
  #11  
Antiguo 17-02-2019
mblascog mblascog is offline
Miembro
 
Registrado: may 2006
Posts: 131
Poder: 18
mblascog Va por buen camino
Buenas, existe alguna diferencia entre ejecutar un programa o un acceso directo?

Este código abre eDrawings:
Código Delphi [-]
procedure TForm1.FormActivate(Sender: TObject);
  var ruta: string;
begin
  edit1.text := '';
  edit1.PasteFromClipboard;
  ruta := 'C:\Program Files\Common Files\eDrawings2019\eDrawings.exe';

  if fileexists(edit1.text) then
    ShellExecute(Handle, 'open', PAnsichar(ruta), PAnsichar(edit1.text), nil, SW_SHOW)
  else
    Showmessage('No existe fichero');
  Application.Terminate;
end;

He creado un acceso directo en la c:\ que abre eDrawings, lo he probado. Y cuando lo intento ejecutar en Delphi no:

procedure TForm1.FormActivate(Sender: TObject);
var ruta: string;
begin
edit1.text := '';
edit1.PasteFromClipboard;
ruta := 'C:\eDrawings.lnk';

if fileexists(edit1.text) then
ShellExecute(Handle, 'open', PAnsichar(ruta), PAnsichar(edit1.text), nil, SW_SHOW)
else
Showmessage('No existe fichero');
Application.Terminate;
end;

Alguien sabe por qué??
Muchas gracias
Responder Con Cita
  #12  
Antiguo 17-02-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular





Responder Con Cita
  #13  
Antiguo 17-02-2019
mblascog mblascog is offline
Miembro
 
Registrado: may 2006
Posts: 131
Poder: 18
mblascog Va por buen camino
Perdón, el primero lo he hecho, el segundo no, es un poco difícil con el móvil. I
Responder Con Cita
  #14  
Antiguo 17-02-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por mblascog Ver Mensaje
Perdón, el primero lo he hecho, el segundo no, es un poco difícil con el móvil. I
Yo con el móvil no puedo ni teclear Bastante has podido hacer.
Responder Con Cita
  #15  
Antiguo 18-02-2019
mblascog mblascog is offline
Miembro
 
Registrado: may 2006
Posts: 131
Poder: 18
mblascog Va por buen camino
Sigo con el problema y no consigo ejecutar el acceso directo:

Código Delphi [-]
procedure TForm1.FormActivate(Sender: TObject);
  var ruta: string;
      error: integer;
begin
  edit1.text := '';
  edit1.PasteFromClipboard;

  if fileexists(edit1.text) then
  begin
    error := ShellExecute(0, 'open', Pchar('C:\eDrawings.lnk'), Pchar(edit1.text), Pchar('C:\'), SW_SHOWNORMAL);
    showmessage(inttostr(error));
  end
  else
    Showmessage('No existe fichero');
  Application.Terminate;
end;

He añadido que ShellExecute devuelva error.
Devuelve el 31: No existe aplicación asociada con esta extensión, es decir, no sabe ejecutar el accesso directo.

Buscando por Internet, veo posts de que es posible poder ejecutar un acceso directo, pero no sé como resolverlo.

Alguna idea. Gracias
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
saber ruta al presionar Ctrl +C DOS994 C++ Builder 11 23-12-2012 23:55:49
Buscar ruta de BD vlanka24 Varios 6 06-08-2008 16:41:34
cambiar la ruta de la bd... lurad Conexión con bases de datos 1 30-11-2006 12:21:00
Fopen Como Saber Ruta Relativa? wakeup C++ Builder 3 05-04-2006 16:58:22
Ruta de instalación Eolo SQL 0 24-08-2004 17:06:17


La franja horaria es GMT +2. Ahora son las 18:19:21.


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