FILETIME Structure The FILETIME structure has the following form:typedef struct _FILETIME { DWORD dwLowDateTime; /* low 32 bits */ DWORD dwHighDateTime; /* high 32 bits */ } FILETIME, *PFILETIME, *LPFILETIME;The FILETIME structure is a 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601. MembersdwLowDateTimeSpecifies the low 32 bits of the file time.dwHighDateTimeSpecifies the high 32 bits of the file time. 这32进制数字是怎么得来的?
CFileStatus status;
CFile::GetStatus( pFileName, status );
status.m_ctime=CTime::GetCurrentTime();
CFile::SetStatus( pFileName, status );
),不是写入当前的日期和时间。char* pFileName = "test.dat";
CFileStatus status;
CFile::GetStatus( pFileName, status );
status.m_ctime= 04/26/2002 10:22a ???????
CFile::SetStatus( pFileName, status );怎么办???
FILETIME sFt1,sFt2,sFt3;
HANDLE handle = CreateFile(pathstr,GENERIC_READ|GENERIC_WRITE,NULL,NULL,OPEN_ALWAYS,NULL,NULL);
sFt1.dwHighDateTime = sFt1.dwLowDateTime = 129076048;
sFt2.dwHighDateTime = ???;
sFt2.dwLowDateTime = ???;
sFt3.dwHighDateTime = ???;
sFt3.dwLowDateTime = ???;
SetFileTime(handle,&sFt1,&sFt2,&sFt3);
CloseHandle(handle);
m_ctime.month = 2;
m_ctime.day = 2;
... ...
就可以了
CFile file;
char* filename="c:\\temp\\test.txt";
//file.Open(filename, CFile::modeReadWrite);
CFileStatus status;
CFile::GetStatus(filename, status );
CTime m_ctime( 2001, 02, 21, 10, 22, 0, 0 );
status.m_ctime;
CFile::SetStatus(filename, status );
file.Close();
不行!怎么改?
CFile file;
char* filename="c:\\temp\\test.txt";
//file.Open(filename, CFile::modeReadWrite);
CFileStatus status;
CFile::GetStatus(filename, status );
CTime m_ctime( 2001, 02, 21, 10, 22, 0, 0 );
status.m_ctime;
CFile::SetStatus(filename, status );
file.Close();
不行!怎么改?
char* filename="c:\\temp\\test.txt";
CFileStatus status;
CFile::GetStatus(filename, status );
CTime m_ctime( 2001, 02, 21, 10, 22, 0, 0 );
status.m_ctime = m_ctime;
CFile::SetStatus(filename, status );
file.Close();
FILETIME sFt1,sFt2,sFt3;
HANDLE handle = CreateFile("c:\\temp\\test.txt",GENERIC_READ|GENERIC_WRITE,NULL,NULL,OPEN_ALWAYS,NULL,NULL);
sFt1.dwHighDateTime = 0x1c09bad;
sFt1.dwLowDateTime = 0x11ffd400;
sFt2.dwHighDateTime = 0x1c09bad;
sFt2.dwLowDateTime = 0x11ffd400;
sFt3.dwHighDateTime = 0x1c09bad;
sFt3.dwLowDateTime = 0x11ffd400;
SetFileTime(handle,&sFt1,&sFt2,&sFt3);
CloseHandle(handle);
呵呵,可以了吧,全部时间都改成 04/26/2002 10:22a
蛋壳,运行发现第一方案不行,第二方案成功,但不知0x1c09bad,0x11ffd400 等等与04/26/2002 10:22a是什么关系?这16进制数字是怎么得来的?完成后给分。
The FILETIME structure has the following form:typedef struct _FILETIME {
DWORD dwLowDateTime; /* low 32 bits */
DWORD dwHighDateTime; /* high 32 bits */
} FILETIME, *PFILETIME, *LPFILETIME;The FILETIME structure is a 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601. MembersdwLowDateTimeSpecifies the low 32 bits of the file time.dwHighDateTimeSpecifies the high 32 bits of the file time.
这32进制数字是怎么得来的?
FILETIME sFt1,sFt2,sFt3;
HANDLE handle = CreateFile("c:\\temp\\test.txt",GENERIC_READ|GENERIC_WRITE,NULL,NULL,OPEN_ALWAYS,NULL,NULL);
GetFileTime(handle,&sFt1,&sFt2,&sFt3);
CloseHandle(handle);
CString Str;
Str.Format("%X %X",sFt1.dwHighDateTime ,sFt1.dwLowDateTime);
AfxMessageBox(Str);