Cita:
Empezado por MaxiDucoli
Hola acá molestando otra vez.
Sabés que el programa se me queda tildado y no ejecuta nada?
Parece que el problema es acá:
if CreateProcess(nil, PCHAR(CommandLine), nil, nil, false, 0, nil, nil, SI, PI)
Pero no puedo saber por qué.
Me dice error
reised exception class $C00000005 with mesage 'access violation at 0x7788d00: write of adress 0x005eb846'
Qué puede ser?
|
Tendrás que especificar más cosas, cual es el código exacto que has usado, S.O. y compilador. Para concretar las cosas te subo el proyecto que hice con su binario. Está escrito y compilado con delphi7.
Te propongo un cambio:
Código Delphi
[-]
function TForm1.Execute(CommandLine: String): cardinal;
var
SI: TStartupInfo;
PI: TProcessInformation;
begin
ZeroMemory(@SI, sizeof(TStartupInfo));
SI.cb:= sizeof(SI);
SI.dwFlags:= STARTF_USESHOWWINDOW or STARTF_USEPOSITION; SI.wShowWindow:= SW_SHOW;
Result:= 0;
if CreateProcess(nil, PCHAR(CommandLine), nil, nil, false, 0, nil, nil, SI, PI) then
begin
WaitForInputIdle(PI.hProcess, 10000);
Visible:= false;
WaitForSingleObject(PI.hProcess,INFINITE);
GetExitCodeProcess(PI.hProcess, Result);
CloseHandle(PI.hProcess);
CloseHandle(PI.hThread);
end
else
Result:= $FFFFFFFF;
end;
Lo puedes encontrar aquí:
Exec_Whait_End.zip.
Saludos.