ファイルのタイムスタンプを設定(U) <TOP>
OpenFile
ファイルを開く
CloseHandle オープンされているオブジェクトハンドルをクローズ
GetSystemTimeAsFileTime
現在のシステム日付とシステム時刻を世界協定時刻(UTC)形式で取得
GetFileTime ファイルスタンプを取得
SetFileTime ファイルの作成日時などを設定
OF_WRITE(&H1) ファイルを書き込みで開く
'================================================================ '= ファイルのタイムスタンプを設定(U) '= (GetSystemTimeAsFileTime.bas) '================================================================ #include "Windows.bi" #define OFS_MAXPATHNAME 128 Type OFSTRUCT cBytes As Byte fFixedDisk As Byte nErrCode As Integer Reserved1 As Integer Reserved2 As Integer szPathName As String * OFS_MAXPATHNAME End Type Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type ' ファイルを開く Declare Function Api_OpenFile& Lib "kernel32" Alias "OpenFile" (ByVal lpFileName$, lpReOpenBuff As OFSTRUCT, ByVal wStyle&) ' オープンされているオブジェクトハンドルをクローズ Declare Function Api_CloseHandle& Lib "Kernel32" Alias "CloseHandle" (ByVal hObject&) ' 現在のシステム日付とシステム時刻を世界協定時刻(UTC)形式で取得 Declare Sub Api_GetSystemTimeAsFileTime Lib "kernel32" Alias "GetSystemTimeAsFileTime" (lpSysTimeAsFileTime As FILETIME) ' ファイルスタンプを取得 Declare Function Api_GetFileTime& Lib "Kernel32" Alias "GetFileTime" (ByVal hFile&, lpCreationTime As FILETIME, lpOldTime As FILETIME, lpLastWriteTime As FILETIME) ' ファイルの作成日時などを設定 Declare Function Api_SetFileTime& Lib "Kernel32" Alias "SetFileTime" (ByVal hFile&, lpCreationTime As FILETIME, lpOldTime As FILETIME, lpLastWriteTime As FILETIME) #define OF_WRITE &H1 'ファイルを書き込みで開く Var Shared Edit1 As Object Var Shared Button1 As Object Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 Var Shared FileName As String '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var os As OFSTRUCT Var ft As FILETIME Var NewTime As FILETIME Var OldTime As FILETIME Var ModifiedTime As FILETIME Var hFile As Long Var Ret As Long FileName = Edit1.GetWindowText hFile = Api_OpenFile(FileName, os, OF_WRITE) 'FILETIME構造体より現在の時間を取得 Api_GetSystemTimeAsFileTime ft 'ファイル独自の時間を取得 Ret = Api_GetFileTime(hFile, NewTime, OldTime, ModifiedTime) '新しい時間を書き込む Ret = Api_SetFileTime(ByVal hFile, NewTime, OldTime, ft) If Ret <> 0 Then A% = MessageBox("", "ファイルタイムを書き換えました!", 0, 2) Else A% = MessageBox("", "ファイルタイムの書き換えはできませんでした!", 0, 2) End If Ret = Api_CloseHandle(hFile) End Sub '================================================================ '= シェルドロップされたファイル名を取得 '================================================================ Declare Sub Edit1_DropFiles edecl (ByVal DF As Long) Sub Edit1_DropFiles(ByVal DF As Long) Var CN As Long CN = GetDropFileCount(DF) FileName = GetDropFileName(DF, 0) Edit1.SetWindowText FileName End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End