Nur einen Teil von Created-FILETIME ändern
Verfasst: 02.01.2014 21:09
Hallo,
nach etwas Sucherei, Copy&Paset, Anpassung und viel Grübelei brauche ich doch wieder einmal Hilfe.
Ich will, wie der Titel schon sagt, nur einen Teil von Created-FILETIME bei Dateien und Ordnern ändern.
Über die Jahreszahl will ich eine Markierung setzen und in den Millisekunden sollen Bit-Informationen untergebracht werden.
Danke im voraus!
nach etwas Sucherei, Copy&Paset, Anpassung und viel Grübelei brauche ich doch wieder einmal Hilfe.
Ich will, wie der Titel schon sagt, nur einen Teil von Created-FILETIME bei Dateien und Ordnern ändern.
Über die Jahreszahl will ich eine Markierung setzen und in den Millisekunden sollen Bit-Informationen untergebracht werden.
Danke im voraus!
Code: Alles auswählen
EnableExplicit
ProcedureDLL SetDir2STDate(File.s, *ST.SYSTEMTIME, Which)
; Return 1 If succes / 0 If fail
; Which specify wich time
; 0 = Time the File was created
; 1 = Time the file was last accessed
; 2 = Time the file was last written
Protected handle, retour, FFT.FILETIME, FLT.FILETIME, FST.SYSTEMTIME
;handle=OpenFile (0, File)
handle=CreateFile_(@File,#GENERIC_READ,#FILE_SHARE_READ|#FILE_SHARE_WRITE,0,#OPEN_EXISTING,#FILE_ATTRIBUTE_NORMAL,0)
If handle<>#INVALID_HANDLE_VALUE
GetFileTime_(handle,0,0,FFT.FILETIME)
FileTimeToLocalFileTime_(FFT.FILETIME,FLT.FILETIME)
FileTimeToSystemTime_(FLT.FILETIME,FST.SYSTEMTIME)
FST\wyear =*ST\wyear
FST\wMilliseconds = *ST\wMilliseconds
SystemTimeToFileTime_(FST.SYSTEMTIME,FLT.FILETIME)
LocalFileTimeToFileTime_(FLT.FILETIME,FFT.FILETIME)
Select Which
Case 1
retour=SetFileTime_(handle,0,FFT.FILETIME,0)
Case 2
retour=SetFileTime_(handle,0,0,FFT.FILETIME)
Default
retour=SetFileTime_(handle,FFT.FILETIME,0,0)
EndSelect
CloseHandle_(handle)
EndIf
If retour<>0 : retour=1 : EndIf
ProcedureReturn retour
EndProcedure
Define Event, Path.s, File.s, st.SYSTEMTIME
#DTM_SETSYSTEMTIME = $1002
#GDT_VALID = 0
GetSystemTime_(st.SYSTEMTIME)
st\wYear = 1964
st\wMonth = 12
st\wDay = 31
st\wMilliseconds=12345
If OpenWindow(0, 0, 0, 220, 260, "Create-Date 2 WF-Date", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CalendarGadget(0, 10, 10, 200, 180)
ButtonGadget(1, 10, 200, 200, 20, "Select Folder")
ButtonGadget(2, 10, 230, 200, 20, "Select File")
SendMessage_(GadgetID(0), #DTM_SETSYSTEMTIME, #GDT_VALID, @st.SYSTEMTIME)
Repeat
Event = WaitWindowEvent()
SendMessage_(GadgetID(0), #DTM_SETSYSTEMTIME, #GDT_VALID, @st.SYSTEMTIME)
If Event = #PB_Event_Gadget
Select EventGadget()
Case 0
SendMessage_(GadgetID(0), #DTM_SETSYSTEMTIME, #GDT_VALID, @st.SYSTEMTIME)
Case 1
Path = PathRequester("Select Folder to set Create-Date 1964", "C:\")
If Not SetDir2STDate(Path,st,0) : MessageRequester("Error !", "42", #PB_MessageRequester_Ok) : EndIf
Case 2
File = OpenFileRequester("Select File to set Create-Date 1964", "", "(*.*)|*.*", 0)
If Not SetDir2STDate(Path,st,0) : MessageRequester("Error !", "42", #PB_MessageRequester_Ok) : EndIf
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
End