PDA

Ver la Versión Completa : Problema a la hora de ejecutar un .exe desde mi programa!!!


Peterman
12-05-2007, 23:32:24
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:


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

Peterman
22-05-2007, 20:51:35
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
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;