>************************************************************ >FUNCTION FileOpWithProgressbar >#INCLUDE SHFileOperation.h > >LPARAMETERS tcSource, tcDestination, tcAction, tlUserCanceled >LOCAL lcSourceString, lcDestString, nStringBase, lcFileOpStruct, lnFlag, lnStringBase >LOCAL loHeap, lcAction, lnRetCode, llCanceled, laActionList[1] > >DECLARE INTEGER SHFileOperation IN SHELL32.DLL STRING @ LPSHFILEOPSTRUCT >SET PROCEDURE TO CLSHEAP ADDITIVE >loHeap = CREATEOBJ('Heap') > >lcAction = UPPER(IIF( Empty( tcAction) Or VarType(tcAction) <> "C", "COPY", tcAction)) >* Convert Action name into function parameter >ALINES(laActionList, "MOVE,COPY,DELETE,RENAME", ",") >lnAction = ASCAN(laActionList, lcAction) >IF lnAction = 0 > * Unknown action > RETURN Null >ENDIF > >lcSourceString = tcSource + CHR(0) + CHR(0) >lcDestString = tcDestination + CHR(0) + CHR(0) >lnStringBase = loHeap.AllocBlob(lcSourceString+lcDestString) > >lnFlag = FOF_NOCONFIRMATION + FOF_NOCONFIRMMKDIR + FOF_NOERRORUI > > >lcFileOpStruct = NumToLONG(_screen.hWnd) + ; > NumToLONG(lnAction) + ; > NumToLONG(lnStringBase) + ; > NumToLONG(lnStringBase + LEN(lcSourceString)) + ; > NumToWORD(lnFlag) + ; > NumToLONG(0) + NumToLONG(0) + NumToLONG(0) > >lnRetCode = SHFileOperation(@lcFileOpStruct) > >* Did user canceled operation? >tlUserCanceled= ( SUBSTR(lcFileOpStruct, 19, 4) <> NumToLONG(0) ) > >RETURN (lnRetCode = 0) > >***********************************