ファイルのファイルタイムを比較 <TOP>
ファイルのファイルタイムを比較します。
GetSystemTime 現在の世界協定時刻を取得
LocalFileTimeToFileTime ローカルファイルタイムをUTCファイルタイム形式で取得
SystemTimeToFileTime システムタイムをファイルタイムに変換
CompareFileTime ファイルのファイルタイムを比較
FileTimeToSystemTime ファイルタイムをシステムファイルに変換
FileTimeToLocalFileTime 世界協定時刻形式ファイル時間をローカルファイル時間に変換
'================================================================
'= ファイルのファイルタイムを比較
'= (CompareFileTime.bas)
'================================================================
#include "Windows.bi"
#define vbCrLf (Chr$(13) & Chr$(10)) 'キャリッジリターンとラインフィード(\r\n)
Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
' 現在の世界協定時刻の取得
Declare Sub Api_GetSystemTime Lib "kernel32" Alias "GetSystemTime" (lpSystemTime As SYSTEMTIME)
' ローカルファイルタイムをUTCファイルタイム形式で取得
Declare Function Api_LocalFileTimeToFileTime& Lib "kernel32" Alias "LocalFileTimeToFileTime" (lpLocalFileTime As FILETIME, lpFileTime As FILETIME)
' システムタイムをファイルタイムに変換
Declare Function Api_SystemTimeToFileTime& Lib "kernel32" Alias "SystemTimeToFileTime" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME)
' ファイルのファイルタイムを比較
Declare Function Api_CompareFileTime& Lib "kernel32" Alias "CompareFileTime" (lpFileTime1 As FILETIME, lpFileTime2 As FILETIME)
' ファイルタイムをシステムファイルに変換
Declare Function Api_FileTimeToSystemTime& Lib "kernel32" Alias "FileTimeToSystemTime" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME)
' 世界協定時刻形式ファイル時間をローカルファイル時間に変換
Declare Function Api_FileTimeToLocalFileTime& Lib "kernel32" Alias "FileTimeToLocalFileTime" (lpFileTime As FILETIME, lpLocalFileTime As FILETIME)
Var Shared Text1 As Object
Var Shared Text2 As Object
Var Shared Timer1 As Object
Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14
Text2.Attach GetDlgItem("Text2") : Text2.SetFontSize 14
Timer1.Attach GetDlgItem("Timer1")
'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
Timer1.SetInterval 100
Timer1.Enable -1
End Sub
'================================================================
'=
'================================================================
Declare Sub Timer1_Timer edecl ()
Sub Timer1_Timer()
Var LocalTime As FILETIME
Var GMTTime As FILETIME
Var STimeLocal As SYSTEMTIME
Var STimeGMT As SYSTEMTIME
Var TmpTime As FILETIME
Var txt As String
Var Ret As Long
Api_GetSystemTime STimeLocal
Ret = Api_SystemTimeToFileTime(STimeLocal, TmpTime)
Ret = Api_FileTimeToLocalFileTime(TmpTime, LocalTime)
Ret = Api_LocalFileTimeToFileTime(LocalTime, GMTTime)
Ret = Api_FileTimeToSystemTime(GMTTime, STimeGMT)
Ret = Api_FileTimeToSystemTime(LocalTime, STimeLocal)
Ret = Api_CompareFileTime(LocalTime, GMTTime)
Select Case Ret
Case -1
Text2.SetWindowText "ローカル < GMT"
Case 0
Text2.SetWindowText "ローカル = GMT"
Case 1
Text2.SetWindowText "ローカル > GMT"
End Select
txt = Format$(STimeLocal.wHour, "## : ") & Format$(STimeLocal.wMinute, "## : ") & Format$(STimeLocal.wSecond, "## ") & "(ローカル)"
txt = txt & vbCrLf & Format$(STimeGMT.wHour, "## : ") & Format$(STimeGMT.wMinute, "## : ") & Format$(STimeGMT.wSecond, "## ") & "(GMT)"
Text1.SetWindowText txt
End Sub
'================================================================
'=
'================================================================
While 1
WaitEvent
Wend
Stop
End