永发信息网

vb 怎么更改文件的修改时间

答案:5  悬赏:0  手机版
解决时间 2021-04-01 15:55
  • 提问者网友:精神病院里
  • 2021-04-01 08:51
vb 怎么更改文件的修改时间
最佳答案
  • 五星知识达人网友:十年萤火照君眠
  • 2021-04-01 09:05
用api函数更改:
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private 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
Private Const GENERIC_WRITE = &H40000000
Private Const OPEN_EXISTING = 3
Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function SetFileTime Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
Private Declare Function SystemTimeToFileTime Lib "kernel32" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function LocalFileTimeToFileTime Lib "kernel32" (lpLocalFileTime As FILETIME, lpFileTime As FILETIME) As Long

Private Sub SetModiTime(ByVal m_Path As String, ByVal m_Date As Date)
Dim lngHandle As Long
Dim udtFileTime As FILETIME
Dim udtLocalTime As FILETIME
Dim udtSystemTime As SYSTEMTIME

udtSystemTime.wYear = Year(m_Date)
udtSystemTime.wMonth = Month(m_Date)
udtSystemTime.wDay = Day(m_Date)
udtSystemTime.wDayOfWeek = Weekday(m_Date) - 1
udtSystemTime.wHour = Hour(m_Date)
udtSystemTime.wMinute = Minute(m_Date)
udtSystemTime.wSecond = Second(m_Date)
udtSystemTime.wMilliseconds = 0

' convert system time to local time
SystemTimeToFileTime udtSystemTime, udtLocalTime
' convert local time to GMT
LocalFileTimeToFileTime udtLocalTime, udtFileTime
' open the file to get the filehandle
lngHandle = CreateFile(m_Path, GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
' change date/time property of the file
SetFileTime lngHandle, udtFileTime, udtFileTime, udtFileTime
' close the handle
CloseHandle lngHandle
MsgBox "The date of the file has been changed to " + Str$(m_Date), vbInformation + vbOKOnly, App.Title
End Sub
全部回答
  • 1楼网友:鱼芗
  • 2021-04-01 11:28
什么叫总用vb复制东西?
  • 2楼网友:孤独的牧羊人
  • 2021-04-01 11:22
用api函数更改:
Private Type FILETIME
        dwLowDateTime   As Long
        dwHighDateTime   As Long
End Type
        Private 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
Private Const GENERIC_WRITE = &H40000000
Private Const OPEN_EXISTING = 3
Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function SetFileTime Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
Private Declare Function SystemTimeToFileTime Lib "kernel32" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function LocalFileTimeToFileTime Lib "kernel32" (lpLocalFileTime As FILETIME, lpFileTime As FILETIME) As Long
Private Sub SetModiTime(ByVal m_Path As String, ByVal m_Date As Date)
        Dim lngHandle        As Long
        Dim udtFileTime     As FILETIME
        Dim udtLocalTime     As FILETIME
        Dim udtSystemTime     As SYSTEMTIME
        udtSystemTime.wYear = Year(m_Date)
        udtSystemTime.wMonth = Month(m_Date)
        udtSystemTime.wDay = Day(m_Date)
        udtSystemTime.wDayOfWeek = Weekday(m_Date) - 1
        udtSystemTime.wHour = Hour(m_Date)
        udtSystemTime.wMinute = Minute(m_Date)
        udtSystemTime.wSecond = Second(m_Date)
        udtSystemTime.wMilliseconds = 0
        '   convert   system   time   to   local   time
        SystemTimeToFileTime udtSystemTime, udtLocalTime
        '   convert   local   time   to   GMT
        LocalFileTimeToFileTime udtLocalTime, udtFileTime
        '   open   the   file   to   get   the   filehandle
        lngHandle = CreateFile(m_Path, GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
        '   change   date/time   property   of   the   file
        SetFileTime lngHandle, udtFileTime, udtFileTime, udtFileTime
        '   close   the   handle
        CloseHandle lngHandle
        MsgBox "The date of the file has been changed to " + Str$(m_Date), vbInformation + vbOKOnly, App.Title
End Sub
  • 3楼网友:玩家
  • 2021-04-01 09:49

方法:
点击“工程”-“工程属性”-“生成”-修改版本号、修改次数
在生产EXE文件点击属性修改
  • 4楼网友:北城痞子
  • 2021-04-01 09:39
给你个思路
第一,在修改文件前把系统时间给改了````呵呵是不是一下子恍然大悟啊,时间改成你之前文件的修改时间
第二,修改之后再把时间调回,因为你用VB,所以基本不用加上时差。直接在程序里换成修改之前的那个时间就OK了
或者,你记下原文件修改的时间,然用VB调系统时间,调成你记下的时间,再修改文件,再调回时间。呵呵。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯