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 |
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 |
Cita:
Muchas gracias |
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 :) |
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 :D
|
ok.... dentro de current version no esta tampoco :( ... y en que hilo puedo seguir este tema? Gracias...
|
|
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
|
Solo se lo pasas por parametros:
Código:
winexec('"c\Imagen.exe" "c:\dibujo.jpg"') |
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 |
lo mas seguro es que la ruta no sea la correcta
prueba copiandolo en la raiz para ver si es eso o no |
la ruta esta bien
esto es todo lo k ago
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 ... |
[/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 |
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. ;) |
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 |
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 |
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 |
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 |
prueba con el photoeditor del office
c:\archivos de programa\archivos comunes\microsoft shared\photoed\photoed.exe i el archivo de imagen k kieras |
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 |
este es el mio, photoed contiene la ruta del programa, y la propiedad hint del Timage contiene el archivo cargado. concateno ambas cadenas dentro de un array de caracteres y como ya e dicho este codigo abre el photoeditor xo no la imagen; |
No veo que le agregues a la cadena donde está la imagen esto "%1" sin comillas el
%1 hace que abra esa imagen Saludos |
ia abia probado antes agregandole el %1 i tp funciona
|
haber se me a ocurrido una cosa que tiene k funcionar, pero no se como acerlo, parece k k el photoeditor no se quiere abrir, e pensado k en el codigo puedo modificar el registro de windows i decirle k el programa predeterminado para jpg es photoeditor, i ejecutar la foto con shellexecute,komo podria modificar el registro de windows para poner el photoeditor como programa predeterminado y luego volver a poner el k estaba configurado , gracias;
|
Para modificar el registro de windows yo hago esto
Con esto elimino el Ejecutar del inicio. Deberias examinar el registro donde predetermina con que prg abre tal archivo Saludos |
alguien sabe la ruta del registro para definir el programa k abre los jpg x defecto ?¿
en cuanto a lo que me as puesto, k valor tiene sKey ?¿? k unidad necesito para el treginifile ? |
weno, y yo sigo con mi pequela rallada, al final e decidido cargar la imagen con shellexecute, i confiando q el usuario tenga definido x defecto el PhotoEditor como programa para abrir las imagenes, e puesto el siguiente codigo:
ahora mi problema es que relaciono este procedimiento con los Timage de mi programa, xo no funcionan, solo funciona el Image1, los demas no ace nada, ni tan sikiera entra el procedimiento, alguna sugerencia ?=???? mmmmm, weno, ia solucione esto , un pekeño consejo no intenten acer 15 cosas a la vez, xk fallaran en 16 tonterias |
Anclar las dos aplicaciones.....
hola!!!!
tengo una pregunta relacionada al tema.......como puedo anclar las dos aplicaciones. lo que quiero decir es como se hace para cerrar la aplicacion hija y cerrar la aplicacion madre....ah viceverza......esa es mi duda..chau que esten bien :p |
Hola a todos!!!
He estado mirando muchos hilos y en internet cosas relacionadas con los comentarios de los hilos pero en no he conseguido nada. La cuestión es que en mi aplicación tengo que arrancar una serie de servicios para que funcione. Con uno no he tenido ningún problema, con Código:
WinExec(PChar(Ruta), SW_SHOWNORMAL); Pero al siguiente servicio que tengo que arrancar, hasta ahora solo se podia hacer desde ms-dos porque hay que pasarle un parametro, no funciona. El código que he utilizado es: Código:
WinExec('cmd.exe C:\Inprise\vbroker\bin\eventos.exe 0',SW_HIDE) No se si es que paso mal los parámetros o si simplemente no se puede, pero no lo consigo. También he probado con ejecutar directamente el servicio Código:
WinExec('C:\Inprise\vbroker\bin\eventos.exe 0',1) Muchas gracias de antemano y saludos a todos. |
Lo has probado con el shellexecute????
es que este permite el paso de parametros dento de su definicion. ShellExecute(Handle, 'OPEN', PChar(Ruta), Pchar(Parametro), PChar(ExtractFilePath(Ruta)), 0) en ultimo caso hazte dentro del aplicativo un bat que luego lo puedas ejecutar. en pseudocodigo seria algo como Código:
Inicio Creabat('C:\Abreprograma.bat'); // uno que solo cree el fichero para no tener que distribuirlo con el programa |
El 'ShellExecute' no me deja hacerlo, me da un error:
Cita:
Código:
ShellExecute(Handle, 'OPEN', PChar(edit1.Text), Pchar(0), PChar(ExtractFilePath(edit1.Text)), 0) Con respecto al .bat, también he probado pasandoselo como parámetro, ejecuta el bat y cierra el 'command', entonces sigue sin funcionar. Código:
cmd := '/ceventos.bat'; Seguramente es que no hago correctamente o se me pasa algo, pero estoy un poco engachao. Muchas gracias a todos por los consejos. |
El error del ShellExecute ya esta claro, se me había pasado poner en el uses 'ShellApi'. :D
Pero sigo en las mismas, me lo ejectua y lo mata. Saludos! |
Gracias a todos por vuestra ayuda, pero después de darle tantas vueltas, es que al ejecutarlo me da un error con las librerias de java, será alguna tontería. No se porque, ya que ayer por la mañana sin ir más lejos ejecute la instrucción manualmente y funcinó correctamente. Pero he probado en otro ordenador el ejecutable y funciona correctamente.
Gracias otra vez por dedicarme vuestro tiempo. ¡Saludos! |
La franja horaria es GMT +2. Ahora son las 18:10:20. |
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