PDA

Ver la Versión Completa : Ejecutar aplicaciones de forma sincrona


friendspark
10-01-2006, 17:05:47
Pues lo dicho, como puedo ejecutar aplicaciones de forma sincrona. Se que asincronamente esta el Shellexecute, pero no creo que me sirva. Os comento...necesito saber el valor de retorno de la aplicacion que ejecuto con el shellexecute. Se que este API devuelve valores en caso de ejecuterse bien, pero no se si me podria devolver este valor; creo que no. Si alguien sabe algo le agradeceria mucho que me lo comentase. Gracias.

Bicho
10-01-2006, 17:27:38
Hola supongo que lo estás intentando con Delphi, si es así héchale un vistazo a la ayuda de la función ShellExecute donde te informa de los parámetros que acepta y los valores que retorna la función.
Además pasate por aquí alomejor te sirve de ayuda

http://www.clubdelphi.com/foros/showthread.php?t=24107

Sino es así puedes buscar información sobre la función WinExecAndWait (http://www.clubdelphi.com/foros/search.php?searchid=405858).

Espero haberte sido de ayuda

Saludos

delphi.com.ar
10-01-2006, 17:34:38
Podrías utilizar CreateProcess, y averiguar el código de salida con GetExitCodeProcess.

var
StartInfo: STARTUPINFO;
ProccesInfo: PROCESS_INFORMATION;
dwExitCode: DWORD;
begin
ZeroMemory(@StartInfo, SizeOf(STARTUPINFO));
with StartInfo do
begin
cb := SizeOf(STARTUPINFO);
dwFlags := STARTF_USESHOWWINDOW;
wShowWindow := SW_HIDE;
end;
Win32Check(CreateProcess(nil, PChar('calc.exe') ,nil, nil, FALSE,
CREATE_NEW_CONSOLE, nil, nil, StartInfo, ProccesInfo));
WaitForSingleObject(ProccesInfo.hProcess, INFINITE);
GetExitCodeProcess(ProccesInfo.hProcess, dwExitCode);

ShowMessageFmt('Salida: %d', [dwExitCode]);


Saludos!

friendspark
12-01-2006, 17:16:19
Muchas gracias por contestar. Al final utilize el CreateProcess, y me ha ido genial. Cabe decir que el programa al que llamaba devolvia un -1 en caso de no funcionar y el GetExitCodeProcess devuelve un Cardinal asi que utilize su valor por defecto en caso de -1-->4294967295 y ya ta.

Gracias por todo.