handle=fcreate("test.txt") >if handle > 0 > =fwrite(handle,"Hello",5) > =fclose(handle) > =_SetFileTime(sys(5)+curdir()+"test.txt",dtot(date()-30)+3600*5) && 30 days before,5 AM > adir(aFileTime,"test.txt") > erase test.txt > disp memo like aFileTime >endif > >function _SetFileTime >LPARAMETERS tcFile, ttNewTime >IF empty(ttNewTime) > MESSAGEBOX("Invalid date passed") > RETURN .f. >ENDIF >DECLARE SHORT SetFileTime IN Win32API; > INTEGER hFile, STRING @lpftCreation,; > STRING @lpftLastAccess, STRING @lpftLastWrite >DECLARE SHORT SystemTimeToFileTime IN Win32API; > STRING @lpst, STRING @lpft >DECLARE SHORT LocalFileTimeToFileTime IN Win32API; > STRING @lpLocalFileTime, STRING @lpFileTime >DECLARE INTEGER CreateFile IN Win32API; > STRING @lpFileName, INTEGER dwDesiredAccess,; > INTEGER dwShareMode, STRING @lpSecurityAttributes,; > INTEGER dwCreationDistribution, INTEGER dwFlagsAndAttributes,; > INTEGER hTemplateFile >DECLARE SHORT CloseHandle IN Win32API; > INTEGER hObject >#DEFINE GENERIC_WRITE 0x40000000 >#DEFINE FILE_SHARE_WRITE 0x00000002 >#DEFINE OPEN_EXISTING 0x00000003 > >lnhandle = CreateFile(@tcFile, GENERIC_WRITE, FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0) && Create handle >IF lnhandle > 0 > lcreatetime = makefiletime(ttNewTime) && Create a filetime structure > IF empty(lcreatetime) > MESSAGEBOX("Filetime creation failed !") > =CloseHandle(lnhandle) && Close the handle > RETURN .f. > ENDIF > lnresult = SetFileTime(lnhandle, @lcreatetime, @lcreatetime, @lcreatetime) && Set file time > =CloseHandle(lnhandle) && Close the handle > RETURN (lnresult # 0) >ENDIF >MESSAGEBOX("Cannot create handle to file!") >RETURN .f. > >FUNCTION makefiletime > LPARAMETER ltdate > LOCAL lnyear, lnmonth, lndow, lnday, lnhours,; > lnminute, lnsecond, lnmilli, lnresult, lcresult > lnyear = YEAR(ltdate) > lnmonth = MONTH(ltdate) > lndow = DOW(ltdate) > lnday = DAY(ltdate) > lnhours = HOUR(ltdate) > lnminute = MINUTE(ltdate) > lnsecond = SEC(ltdate) > lnmilli = 0 > lcsystime = Val2Str(lnyear, 2) + Val2Str(lnmonth, 2) +; > Val2Str(lndow, 2) + Val2Str(lnday, 2) +; > Val2Str(lnhours, 2) + Val2Str(lnminute, 2) +; > Val2Str(lnsecond, 2) + Val2Str(lnmilli, 2) > STORE REPLICATE(CHR(0), 8) TO lcfiletime, lcutctime > lnresult = SystemTimeToFileTime(@lcsystime, @lcfiletime) > IF lnresult # 0 > lnresult = LocalFileTimeToFileTime(@lcfiletime, @lcutctime) > RETURN iIF( lnresult # 0, lcutctime, "" ) > ENDIF > RETURN "" > >FUNCTION Val2Str > LPARAMETERS pn_val, pn_bytes > > LOCAL lcresult, lnval, lnmask, lni, lnbyte > lcresult = "" > lnval = pn_val > lnmask = 255 > FOR lni = 1 TO pn_bytes > lnbyte = BITAND(lnval, lnmask) > lcresult = lcresult + CHR(lnbyte) > lnval = BITRSHIFT(lnval, 8) > NEXT > RETURN lcresultCetin