如题所示!每个目录都有一个最后修改时间,可以通过DateLastModified得到,那又如何更改这个时间为特定的时间呢?谢谢各位大侠帮忙……

解决方案 »

  1.   

    这是一个VC的代码,尝试修改成VB的:http://www.pcdog.com/p/html/20041122/221120042691_1.htm
      

  2.   

    看不太懂……BOOL SetDirTime(char DirName, SYSTEMTIME new—stime) // 修改指定目录的时间 

          HANDLE hDir;       hDir = CreateFile (  // 打开目录的Win32 API调用 
          DirName,   
          GENERIC—READ | GENERIC—WRITE, // 必须“写”方式打开 
          FILE—SHARE—READ|FILE—SHARE—DELETE,NULL,OPEN—EXISTING,  // 打开现存的目录 
          FILE—FLAG—BACKUP—SEMANTICS,  // 只有这样才能打开目录 
          NULL);       if (hDir ==INVALID—HANDLE—VALUE ) 
                 return FALSE; // 打开失败时返回       FILETIME lpCreationTime;   
          // creation time目录的创建时间       FILETIME lpLastAccessTime; // last access time最近一次访问目录的时间       FILETIME lpLastWriteTime;  // last write time最近一次修改目录的时间       SystemTimeToFileTime(&new—stime, &lpCreationTime); // 转换成文件的时间格式       SystemTimeToFileTime(&new—stime, &lpLastAccessTime);       SystemTimeToFileTime(&new—stime, &lpLastWriteTime);       BOOL retval = SetFileTime( // 修改目录时间的Win32 API函数调用       hDir, &lpCreationTime,&lpLastAccessTime,&lpLastWriteTime);   CloseHandle(hDir); // 关闭目录       return retval;   // 返回修改成功与否的返回码 } 帮个忙,翻译成VB,谢谢!
      

  3.   

    '模块
    Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
    Public Declare Function SystemTimeToFileTime Lib "kernel32" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long
    Public Declare Function SetFileTime Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
    Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    Public Type FILETIME
            dwLowDateTime As Long
            dwHighDateTime As Long
    End Type
    Public Type SECURITY_ATTRIBUTES
            nLength As Long
            lpSecurityDescriptor As Long
            bInheritHandle As Long
    End Type
    Public 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
    Public Const GENERIC_READ = &H80000000
    Public Const GENERIC_WRITE = &H40000000
    Public Const FILE_SHARE_READ = &H1
    Public Const FILE_SHARE_WRITE = &H2
    Public Const OPEN_EXISTING = 3
    Public Const FILE_FLAG_BACKUP_SEMANTICS = &H2000000
    Public Const INVALID_HANDLE_VALUE = -1
    Public Function SetDirTime(DirName As String, NewTime As SYSTEMTIME) As Boolean
        Dim hDir As Long
        Dim lpCreationTime As FILETIME
        Dim lpLastAccessTime As FILETIME
        Dim lpLastWriteTime As FILETIME
        Dim retval As Boolean
        Dim sAttribute As SECURITY_ATTRIBUTES
        hDir = CreateFile(DirName, GENERIC_WRITE, FILE_SHARE_READ, sAttribute, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0)
        
        If hDir = INVALID_HANDLE_VALUE Then SetDirTime = False: Exit Function
        
        Call SystemTimeToFileTime(NewTime, lpCreationTime) ' 转换成文件的时间格式
        Call SystemTimeToFileTime(NewTime, lpLastAccessTime)
        Call SystemTimeToFileTime(NewTime, lpLastWriteTime)
        
        retval = SetFileTime(hDir, lpCreationTime, lpLastAccessTime, lpLastWriteTime)
        CloseHandle (hDir)
        SetDirTime = retval
    End Function'窗体
    Private Sub Form_Load()
        Dim NewTime As SYSTEMTIME
        NewTime.wYear = Year(Now)
        NewTime.wMonth = Month(Now)
        NewTime.wDay = Day(Now)
        NewTime.wDayOfWeek = Weekday(Now)
        NewTime.wHour = Hour(Now)
        NewTime.wMinute = Minute(Now)
        NewTime.wSecond = Second(Now)
        Call SetDirTime("H:\My Documents", NewTime)
    End Sub
      

  4.   

    经过改造,得最后成形的结果如下,与大家一起分享:
    '模块
    Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
    Private Declare Function SystemTimeToFileTime Lib "kernel32" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) 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 CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    Private Declare Function LocalFileTimeToFileTime Lib "kernel32" (lpLocalFileTime As FILETIME, lpFileTime As FILETIME) As LongPrivate Type FILETIME
            dwLowDateTime As Long
            dwHighDateTime As Long
    End Type
    Private Type SECURITY_ATTRIBUTES
            nLength As Long
            lpSecurityDescriptor As Long
            bInheritHandle 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_READ = &H80000000
    Private Const GENERIC_WRITE = &H40000000
    Private Const FILE_SHARE_READ = &H1
    Private Const FILE_SHARE_WRITE = &H2
    Private Const OPEN_EXISTING = 3
    Private Const FILE_FLAG_BACKUP_SEMANTICS = &H2000000
    Private Const INVALID_HANDLE_VALUE = -1Public Function SetDirTime(DirName As String, NewTime As Date) As Boolean
        SetDirTime = False
        On Error GoTo myError
        Dim hDir As Long
        Dim tmpTime As SYSTEMTIME
        tmpTime.wYear = Year(NewTime)
        tmpTime.wMonth = Month(NewTime)
        tmpTime.wDay = Day(NewTime)
        tmpTime.wDayOfWeek = Weekday(NewTime)
        tmpTime.wHour = Hour(NewTime)
        tmpTime.wMinute = Minute(NewTime)
        tmpTime.wSecond = Second(NewTime)    Dim lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME, lptLocalTime As FILETIME
        Dim retval As Boolean
        Dim sAttribute As SECURITY_ATTRIBUTES
        hDir = CreateFile(DirName, GENERIC_WRITE, FILE_SHARE_READ, sAttribute, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0)
        
        If hDir = INVALID_HANDLE_VALUE Then SetDirTime = False: Exit Function
        
        Call SystemTimeToFileTime(tmpTime, lptLocalTime) ' 转换成文件的时间格式
        Call LocalFileTimeToFileTime(lptLocalTime, lpCreationTime)
        Call LocalFileTimeToFileTime(lptLocalTime, lpLastAccessTime)
        Call LocalFileTimeToFileTime(lptLocalTime, lpLastWriteTime)
        
        retval = SetFileTime(hDir, lpCreationTime, lpLastAccessTime, lpLastWriteTime)
        CloseHandle (hDir)
        SetDirTime = True
        Exit Function
    myError:
        
    End Function调用:SetDirTime("D:\tmp", Now) 返回成功与失败,即true或false