上一篇基础知识的游历中,作者带领我们窥略窗口的生与死,以及所需要的API函数和关于消息列队的窗口函数,那么接下来,作者继续讲述Windows API的美妙之处。。。。。。。。。。
可执行文件格式:
DOS程序是所谓的MZ格式这个简写是创建他的人名字的首字母,并且他是DOS系统的主要构造者。Console程序的格式则与所有Win32程序一样,是所谓的PE(Portable Executable)格式,意思是他可以在任何的WIN32平台运行。
那么下面是实践从一个目录中寻找所有文件把不相同的文件负责到指定的目录中,那么这次就是作者带领我初次窥探Window API 那么在要编写这个项目之前需要用到几个API函数:
GetCurrentDirectory->从英文翻译可以知道这是一个获取当前文件目录路径的函数
FindFirstFile->找到这颗树中相同辈分的老大
FindNextFile->找到这颗树中当前兄弟的细佬
CompareFileTime->比较当前的时间
CopyFile->负责文件
DeleteFile->删除文件
在处理完毕命令列参数中的SrcDir和DstDir之后,JBACKUP先把SrcDir中的所有文件(不包含子目录)搜索一遍,并储存在一个数组srcFiles[]中,每个数组的元素都是自定义的SRCFILE数据结构
typedef struct _SRCFILE
{
WIN32_FIND_DATA fd;//是在FindFirstFile和FindNextFile的返回值的文件的属性
BOOL bIsNew;
}SRCFILE;
SRCFILE srcFiles[FILEMAX];
WIN32)FIND_DATA fd;
bRet=true;
iSrcFiles=0;
hFile=FindFirstFile(SrcDir,&fd);
while(hFile!=INVALID_HANDLE_VALUE&&bRet)
{
if(fd.dwFileAttributes==FILE_ATTRIBUTE_ARCHIVE)
{
srcFiles[iSrcFiles].fd=fd;
srcFiles[iSrcFiles].bIsNew=FALSE;
iSrcFiles++;
}
bRet=FindNextFile(hFile,&fd);
}
再把DstDir中的所有文件(不含子目录文件)搜索一遍,储存在一个destFiles[]数组中,每个数组元素是一个自我定的DESTFILE数据结构
typedef struct _DESTFILE
{
WIN32_FIND_DATA fd;
BOOL bMatch;
}DESTFILE;
DESTFILE destFiles[FILEMAX];
WIN32_FIND_DATA fd;
bRet=TRUE;
iDestFiles=0;
hFile=FindFirstFile(DstDir,&fd);
while(hFile!=INVALID_HANDLE_VALUE&&bRet)
{
if(fd.dwFileAttributes==FILE_ATTRIBUTE_ARCHIVE)//这是文档
{
destFiles[iDestFiles].fd=fd;
destFiles[iDestFiles].bMatch=FALSE;
iDestFiles++;
}
bRet=FindNextFile(hFile,&fd);
}
首先设计出参数的顺序,那么参数一是SRCFilePath,那么参数二是DestFilePath,然后遍历源目录路径和目的目录的路径
在源目录文件集中找到