PROCEDURE doZip > LOCAL lnWA, lcZipName, listfile, lcbatFile, logfile, lcPKZ, lcThere > IF EMPTY(THIS.FILES) > alert("No fresh files to zip") > RETURN > ENDIF > lnWA=SELECT() > IF NOT DIRECTORY("zips") > MD zips > ENDIF > > lcZipName=THIS.zipname > listfile=FULLPATH(".\zip.lst") > STRTOFILE(THIS.FILES, listfile) > lcbatFile=FULLPATH(FORCEEXT(SYS(2015),"bat")) > logfile=FORCEEXT(lcbatFile,"log") > THIS.logfile=logfile > lcPKZ=FULLPATH("pkzip25.exe") > > TEXT textmerge noshow to lcBat >"<<lcPkz>>" -add=update -dire "<<lcZipName>>" @"<<listfile>>" >"<<logfile>>" > ENDTEXT > lcThere=FULLPATH(".") > STRTOFILE(lcBat, lcbatFile) > LOCAL oprocess AS api_apprun OF PROCESS.vcx > oprocess=NEWOBJECT('api_apprun','process', '', lcbatFile, lcThere, 'HID') > oprocess.LaunchAppAndWait() > RELEASE oprocess > ERASE (lcbatFile) > SELECT (lnWA) > RETURN > ENDPROCThanks Dragan. I found a simple solution using Windows Scripting Host:
oShell = CREATEOBJECT('WScript.Shell') oShell.Run( '"My Application Name.exe" MyParameter' , , .T. ) && .T. = Wait for completion / .F. return immediately.