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)
-   -   Problema a la hora de ejecutar un .exe desde mi programa!!! (https://www.clubdelphi.com/foros/showthread.php?t=43497)

Peterman 12-05-2007 23:32:24

Problema a la hora de ejecutar un .exe desde mi programa!!!
 
Buenas coleguis,

lo que me ocurre es que llevo intentando durante bastante rato como ejecutar un .exe desde mi programa en Borland C++Builder 6 y no se que pacha porque aparentemente el compilador se lo traga pero no me hace nada...me gustarían que viesen las distintas formas con las que he probado:



//----------------------------------------------------------------------
void __fastcall TFPrincipal::Button1Click(TObject *Sender)
{

///////////Vamos a intentar echar a gnuplot a andar//////////
ShowMessage("Estamos intentando mostrar una puta grafica");


// 1º forma:
// WinExec("c:\gnuplot4.2\bin\pnnuplot.exe c:\gnuplot4.2\demo\discrete.dem", SW_SHOWNORMAL);


//2º forma:
// WinExec("c:\windows\notepad.exe",SW_SHOWNORMAL);



//3º forma:
// WinExec("c:\gnuplot4.2\bin\wgnuplot.EXE", SW_NORMAL);


//4º forma:
//WinExec("c:\gnuplot4.2\LineaComandos.bat",SW_NORMAL);

//5º forma:
ShellExecute(0, "open", "c:\gnuplot4.2\bin\pnnuplot.exe c:\gnuplot4.2\demo\discrete.dem", 0, 0, SW_SHOWNORMAL);


//6º forma:
/*
AnsiString dibujo;
dibujo= "c:\gnuplot4.2\demo\discrete.dem";
ShellExecute(0,"open","c:\gnuplot4.2\bin\pnnuplot.exe",dibujo.c_str(),0,SW_SHOW);
*/

}
//----------------------------------------------------------------------


La 4º forma está basada en ejecutar un archivo .bat que me he fabricado con esta linea de comando:
C:\gnuplot4.2\bin\pnnuplot.exe c:\gnuplot4.2\demo\discrete.dem


Bueno, pues ejecuto mi programa, y le doy al botón; me salta el showmessage pero no ejecuta nada de nada.

(Si lo hago directamente desde la linea de comandos, el programa se me ejecuta bien, lo digo para que quede en acta que el programa que quiero ejecutar funciona).

Bueno, pues nada, muchas gracias y haber si pudierais facilitarme una solucion.
Gracias a todos, Juan Pedro

:)

dec 12-05-2007 23:39:56

Hola,

Si no recuerdo mal debes indicar las barras invertidas así: "\\". Es decir, por ejemplo:

Código:

WinExec("c:\\gnuplot4.2\\bin\\wgnuplot.EXE", SW_NORMAL);

Peterman 22-05-2007 20:51:35

De lujo, socio
 
La solucion era más sencilla de lo que me esperaba. Gracias por la ayuda...Problema Solucionado...


Ahí queda algunas formas de ejecutar un programa desde nuestro programa.

Adios y Gracias

maeyanes 22-05-2007 20:57:40

mmm...

Y como lo solucionaste? Digo, para que si alguién más tiene tu mismo problema pueda encontrar la solución... ;)


Saludos...

maxid 23-05-2007 16:08:21

winexec ya caducó
 
La funcion winexec esta por compatibilidad y es una rutina para 16b, lo que tenes que hacer es crear un proceso.
usando la funcion createprocess
con esto ejecuta y te devuelbe el handle, lo que te sirve para seguirlo, eliminar el procesos o lo que se te ocurra hacer con el..


Function EjecutarProceso(FileName:TFileName;Parametros:String):THandle;
var
procinfo:TProcessInformation;
info:tstartupinfo;
begin
fillchar(info,sizeof(info),0);
info.cb:= sizeof(info);
info.dwflags:= STARTF_USESHOWWINDOW;
info.wShowWindow:= SW_SHOWNORMAL;
If not CreateProcess(nil,
Pchar(filename +' '+Parametros)
,nil,nil,false,0,nil,nil,info,procinfo) then
raise Exception.Create('no se puede crear el proceso');
Result:= procinfo.hProcess;
end;


La franja horaria es GMT +2. Ahora son las 23:28: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