Pregunta: | 3923 - LLAMAR A UN EJECUTABLE |
Autor: | Marcos Altamirano |
Como puedo hacer que un programa en delphi mande llamar desde el mismo programa otra aplicación ya sea otro programa en c,pascal (ejecutable) o cualquier otro archivo con extension .EXE. Se los agradezco de antemano. |
Respuesta: | Dario Alvarez Aranda |
WinExec(PChar(´c:\windows\notepad.exe´),SW_SHOWNORMAL); {Ejecuta el Notepad.Exe} En este caso Delphi no espera que la aplicacion termine. para que espere que termine se utiliza este codigo function WinExecAndWait32(FileName:String; Visibility:integer):integer; var zAppName:array[0..512] of char; zCurDir:array[0..255] of char; WorkDir:String; StartupInfo:TStartupInfo; ProcessInfo:TProcessInformation; Resultado,exitCode: DWord; begin StrPCopy(zAppName,FileName); GetDir(0,WorkDir); StrPCopy(zCurDir,WorkDir); FillChar(StartupInfo,Sizeof(StartupInfo),#0); StartupInfo.cb := Sizeof(StartupInfo); StartupInfo.dwFlags := STARTF_USESHOWWINDOW; StartupInfo.wShowWindow := Visibility; CreateProcess(nil, zAppName, nil, nil, false, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo); repeat exitCode := WaitForSingleObject( ProcessInfo.hProcess,1000); Application.ProcessMessages; until (exitCode <> WAIT_TIMEOUT); GetExitCodeProcess(ProcessInfo.hProcess,Resultado); MessageBeep(0); CloseHandle(ProcessInfo.hProcess ); Result:=Resultado; end; |