Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Lanzar programa desde mi programa (https://www.clubdelphi.com/foros/showthread.php?t=12272)

JoseQ 14-07-2004 17:16:45

Código Delphi [-]
procedure TModuloImagenes.Image1DblClick(Sender: TObject);
var editor:tsearchrec;
    cadena:array [0..256] of char;
begin
strcopy(cadena,pchar(photoed));
with sender as timage do
begin
strcat(cadena,pchar(hint));
showmessage(cadena);
if FindFirst(photoed,0,editor) = 0 then
  WinExec(cadena,1) else
showmessage('No se encuentra el PhotoEditor');
end;
end;
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;

Pablo Carlos 14-07-2004 17:23:47

No veo que le agregues a la cadena donde está la imagen esto "%1" sin comillas el
%1 hace que abra esa imagen
Saludos

JoseQ 14-07-2004 17:50:49

ia abia probado antes agregandole el %1 i tp funciona

JoseQ 16-07-2004 12:22:55

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;

Pablo Carlos 16-07-2004 16:03:32

Para modificar el registro de windows yo hago esto
Código Delphi [-]
var
sKey : string;
reg : TRegIniFile;
begin
reg.WriteInteger('Software\Microsoft\Windows\CurrentVersion\Policies\Explorer'+sKey+#0,'NoRun',1);
reg.Free;
end;
Con esto elimino el Ejecutar del inicio. Deberias examinar el registro donde predetermina con que prg abre tal archivo
Saludos

JoseQ 16-07-2004 16:49:53

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 ?

JoseQ 19-07-2004 11:21:04

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:

Código Delphi [-]
procedure TModuloImagenes.Photoedi(Sender: TObject);
var editor:tsearchrec;
begin
with sender as timage do
begin
if FindFirst(photoed,0,editor) = 0 then
shellexecute(handle,'open',pchar(hint),nil, nil, SW_SHOW) else
showmessage('No se encuentra el PhotoEditor');
end;
end;
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

inexperto 25-07-2004 20:38:12

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

weke 08-09-2004 09:56:21

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);
solucionado.
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)
Mi intención es ejecutar un 'command' y después ejecutar la instrucción, pero de esta manera solo se me abre el 'command'.
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)
sin arrancar ningún 'command', pero de esta manera, arranca el servicio y en cuanto lo arranca lo mato.

Muchas gracias de antemano y saludos a todos.

argami 08-09-2004 11:45:59

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');
    EjecutaBat('C:\Abreprograma.bat');
  fin


Creabat('C:\Abreprograma.bat');
// uno que solo cree el fichero para no tener que distribuirlo con el programa

weke 09-09-2004 12:51:24

El 'ShellExecute' no me deja hacerlo, me da un error:
Cita:

undeclared identifier
La línea de código es la siguiente, igual cometo algún error:
Código:

ShellExecute(Handle, 'OPEN', PChar(edit1.Text), Pchar(0), PChar(ExtractFilePath(edit1.Text)), 0)
En edit1 esta la ruta del ejecutable, el parámetro que le tengo que pasar es '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';
...
WinExec(PChar('command.com ' + cmd),1);

Y ejecutando direcctamente el .bat me sigue pasando lo mismo, se cierra y no mata el servicio en cuanto se ejecuta.

Seguramente es que no hago correctamente o se me pasa algo, pero estoy un poco engachao.

Muchas gracias a todos por los consejos.

weke 09-09-2004 13:23:06

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!

weke 09-09-2004 13:56:26

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 01:09:49.

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