Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-07-2004
Avatar de Pablo Carlos
Pablo Carlos Pablo Carlos is offline
Miembro
 
Registrado: jun 2004
Ubicación: Mendoza - Argentina
Posts: 270
Poder: 21
Pablo Carlos Va por buen camino
Smile Lanzar programa desde mi programa

Hola Gente. aqui de nuevo...
Quisiera que mi prg ejecute otro programa por ejemplo el Word... y lo hago asi
WinExec(PChar('C:\ARCHIV~1\Microsoft Office\Office\WinWord.exe'), SW_SHOWNORMAL); hasta aqui todo bien... pero que sucede cuando se instalan nuevos programas? debería modificar mi programa para actualizarlo y me parece un poco rustico...
la idea es crear una base de datos donde yo carge las Path de cada exe y que mi programa, en su código tenga algo asi...

var Ruta : String;

Ruta := Label1.Caption; (o el contenido del campo. que esto no sería problema)
WinExec(PChar('Ruta'), SW_SHOWNORMAL);
Que obviamente no funciona... acepto sugerencias
Muchas gracias.... Pablo
Responder Con Cita
  #2  
Antiguo 11-07-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 26
eduarcol Va por buen camino
WinExec(PChar('Ruta'), SW_SHOWNORMAL);

Obviamente si encierras Ruta entre las comillas no te va a funcionar, por que el compilador asumira que quieres ejecutar Ruta, mas no el contenido de Ruta.

Lo que tendrias que hacer es

WinExec(PChar(Ruta), SW_SHOWNORMAL);

Suerte
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #3  
Antiguo 11-07-2004
Avatar de Pablo Carlos
Pablo Carlos Pablo Carlos is offline
Miembro
 
Registrado: jun 2004
Ubicación: Mendoza - Argentina
Posts: 270
Poder: 21
Pablo Carlos Va por buen camino
Cita:
Empezado por eduarcol
WinExec(PChar('Ruta'), SW_SHOWNORMAL);

Obviamente si encierras Ruta entre las comillas no te va a funcionar, por que el compilador asumira que quieres ejecutar Ruta, mas no el contenido de Ruta.

Lo que tendrias que hacer es

WinExec(PChar(Ruta), SW_SHOWNORMAL);

Suerte
Excelente.... ahora lo que no entiendo es como se me escapan esos detalles tan simples
Muchas gracias
Responder Con Cita
  #4  
Antiguo 11-07-2004
Avatar de Pablo Carlos
Pablo Carlos Pablo Carlos is offline
Miembro
 
Registrado: jun 2004
Ubicación: Mendoza - Argentina
Posts: 270
Poder: 21
Pablo Carlos Va por buen camino
ahora si quisiera que mi prg se ejecute antes que continue la carga de windows (esto seria tipo usuario) en el registro no encuentro donde... estube buscando en hkey_local_machine -> software -> microsoft -> windows y no lo logro... por alli me dijeron que en la misma ruta pero en windowsnt-> winlogon (pero este winlogon no lo tengo--- estoy hablando de win95 y milenium
Tambien me encanta Venezuela
Responder Con Cita
  #5  
Antiguo 11-07-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 26
eduarcol Va por buen camino
Es que dentro de windows debe buscar la carpeta Current Version, y alli encontras winlogon, de todas formas esto puedes seguir discutiendolo en el otro hilo, respetemos la guia de estilo
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #6  
Antiguo 11-07-2004
Avatar de Pablo Carlos
Pablo Carlos Pablo Carlos is offline
Miembro
 
Registrado: jun 2004
Ubicación: Mendoza - Argentina
Posts: 270
Poder: 21
Pablo Carlos Va por buen camino
ok.... dentro de current version no esta tampoco ... y en que hilo puedo seguir este tema? Gracias...
Responder Con Cita
  #7  
Antiguo 11-07-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 26
eduarcol Va por buen camino
Puedes seguir en este Hilo

Si pruebas creando la clave del registro a ver que sucede
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #8  
Antiguo 13-07-2004
JoseQ JoseQ is offline
Miembro
 
Registrado: jul 2004
Posts: 167
Poder: 21
JoseQ Va por buen camino
y si ademas de ejecutar un programa, keremos k este se abra con un archivo determinado, es decir,abrir x ejemplo un JPG con el imaging de win o con el photoshop. GRacias
Responder Con Cita
  #9  
Antiguo 13-07-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 26
eduarcol Va por buen camino
Solo se lo pasas por parametros:

Código:
winexec('"c\Imagen.exe" "c:\dibujo.jpg"')
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #10  
Antiguo 13-07-2004
JoseQ JoseQ is offline
Miembro
 
Registrado: jul 2004
Posts: 167
Poder: 21
JoseQ Va por buen camino
no me traga eso

mi codigo (segun tu version es asi)

windows.WinExec(cadena pchar(hint),1)


donde cadena es la ruta del programa, e Hint es el nombre del fichero que quiero cargar con el programa.

tambien e probrado a concatenar ambas cadenas para utilizar un solo parametro:

strcat(cadena , pchar(hint);
windows.WinExec(cadena ,1);

asi me compila bien, xo en runtime al ejecutar el codigo me abre el programa xo no el archivos
Responder Con Cita
  #11  
Antiguo 13-07-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 26
eduarcol Va por buen camino
lo mas seguro es que la ruta no sea la correcta
prueba copiandolo en la raiz para ver si es eso o no
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #12  
Antiguo 13-07-2004
JoseQ JoseQ is offline
Miembro
 
Registrado: jul 2004
Posts: 167
Poder: 21
JoseQ Va por buen camino
la ruta esta bien




esto es todo lo k ago

Código Delphi [-]
 
procedure TModuloImagenes.Image1DblClick(Sender: TObject);
const max=255    ;
var editor:tsearchrec;
    cadena:array [0..max] of char;
begin
strcopy(cadena,'c:\archivos de programa\archivos comunes\microsoft shared\photoed\photoed.exe  ' );
with sender as timage do
begin
strcat(cadena,pchar(hint));
showmessage(cadena); // solamente para comprobar la ruta
if FindFirst('c:\archivos de programa\archivos comunes\microsoft shared\photoed\photoed.exe',0,editor) = 0 then
windows.WinExec(cadena pchar(hint),1)  else
showmessage('No se encuentra el PhotoEditor');
end;
end;


el (Timage).hint contiene la misma cadena k se a cargado en el picture.loadfromfile, x lo tanto el contenido sera valido, despues le concateno delante la ruta (dejando un espacio en blanco) del photoeditor i lo ejecuto,

el resultado es que me abre el photoeditor pero no me abre la fotografia ...
Responder Con Cita
  #13  
Antiguo 14-07-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 26
eduarcol Va por buen camino
Código Delphi [-]
 
procedure TModuloImagenes.Image1DblClick(Sender: TObject);
const max=255    ;
var editor:tsearchrec;
    cadena:array [0..max] of char;
begin
strcopy(cadena,'"c:\archivos de programa\archivos comunes\microsoft shared\photoed\photoed.exe"  ' );
with sender as timage do
begin
strcat(cadena,pchar(Image1.Hint));
showmessage(cadena); // solamente para comprobar la ruta
if FindFirst('c:\archivos de programa\archivos comunes\microsoft shared\photoed\photoed.exe',0,editor) = 0 then
windows.WinExec(cadena pchar(hint),1)  else
showmessage('No se encuentra el PhotoEditor');
end;
end;
[/quote]

Prueba los dos pequeños cambio que te propongo a ver que sucede, no estoy muy seguro en referencias a objetos, pero creo que el Hint que estas capturando es el del Form y no el del Imagen
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #14  
Antiguo 14-07-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Si los nombres de archivo del programa y del que queres pasar como parámetro contienen espacios, tenes que encerrarlos entre comillas para que el sistema los considere un único parámetro:

por ejemplo:

WinExec('c:\archivos de programa\programa.exe c:\mis documentos\documento.doc');

tratará de ejecutar c:\archivos, pasándole como parámetros:

de
programa\programa.exe
c:\mis
documentos\documento.doc

totalmente erratico, no:

en cambio:

WinExec('"c:\archivos de programa\programa.exe" "c:\mis documentos\documento.doc'");

Tratará de ejecutar:

c:\archivos de programa\programa.exe

con el parámetro:

c:\mis documentos\documento.doc

otra opción es usar solamente nombres de archivo 8.3:

WinExec('c:\archiv~1\programa.exe c:\misdoc~1\documento.doc');

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #15  
Antiguo 14-07-2004
JoseQ JoseQ is offline
Miembro
 
Registrado: jul 2004
Posts: 167
Poder: 21
JoseQ Va por buen camino
eduarcol, tu solucion no me sirve, ia k ese procedimiento solo sirve para la imagen1, y tengo 36 imagenes... xD tendria k escribir 36 procedimientos iguales !!! utilizando el parametro server le digo al compilador que objeto es el que4 a llamado al procedimiento, fijate que pongo with sender as timage ... en cuanto a jachguate probare pasando las dos cadenas x separado, xo tengo k pasarle variables, no cadenas literales, no puedo, x tanto ,usar las comillas


eduarcol el hint no es del form, comprobado x showmessage.pertenece a la imagen que llama al procedimiento
Responder Con Cita
  #16  
Antiguo 14-07-2004
Avatar de Pablo Carlos
Pablo Carlos Pablo Carlos is offline
Miembro
 
Registrado: jun 2004
Ubicación: Mendoza - Argentina
Posts: 270
Poder: 21
Pablo Carlos Va por buen camino
Por que no le pasas la ruta por un Var por ejemplo...
Var Ruta : string;
Ruta := Edit1.Caption
y la ruta la escribis en un Edit y cuando ejecutas WinExec(Ruta);
Te servira asi?
Saludos
Responder Con Cita
  #17  
Antiguo 14-07-2004
JoseQ JoseQ is offline
Miembro
 
Registrado: jul 2004
Posts: 167
Poder: 21
JoseQ Va por buen camino
la ruta se la paso x variable,

[delphi]
procedure a;
var cadena:array[0..256] of char;
begin
strcopy(cadena,'c:\programa.exe archivo.doc');
winexec(cadena);
end;

pues esto me abre programa.exe xo no me carga archivo.doc
Responder Con Cita
  #18  
Antiguo 14-07-2004
Avatar de Pablo Carlos
Pablo Carlos Pablo Carlos is offline
Miembro
 
Registrado: jun 2004
Ubicación: Mendoza - Argentina
Posts: 270
Poder: 21
Pablo Carlos Va por buen camino
Mira lo acabo de probar y funciona...
C:\ARCHIV~1\Microsoft Office\Office\WinWord.exe c:\orden.doc %1
con esa cadena me abre el Word junto al archivo orden
Saludos
Responder Con Cita
  #19  
Antiguo 14-07-2004
JoseQ JoseQ is offline
Miembro
 
Registrado: jul 2004
Posts: 167
Poder: 21
JoseQ Va por buen camino
prueba con el photoeditor del office

c:\archivos de programa\archivos comunes\microsoft shared\photoed\photoed.exe i el archivo de imagen k kieras
Responder Con Cita
  #20  
Antiguo 14-07-2004
Avatar de Pablo Carlos
Pablo Carlos Pablo Carlos is offline
Miembro
 
Registrado: jun 2004
Ubicación: Mendoza - Argentina
Posts: 270
Poder: 21
Pablo Carlos Va por buen camino
No tengo el photoed.exe
yo lo hago asi:
var Ruta : String;
begin
Ruta := edit.Caption;
WinExec(PChar(Ruta), SW_SHOWNORMAL);
end;
y ruta es igual a C:\ARCHIV~1\Microsoft Office\Office\WinWord.exe c:\orden.doc %1
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 19:59:04.


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