void FindFile(LPCTSTR szPath)
{
TCHAR szFind[MAX_PATH] = {0};
TCHAR szFile[MAX_PATH] = {0};
WIN32_FIND_DATA FindFileData;
_tcscpy_s(szFind, MAX_PATH, szPath);
_tcscat_s(szFind, MAX_PATH, _T("\\*.*"));
HANDLE hFind = ::FindFirstFile(szFind, &FindFileData);
if(INVALID_HANDLE_VALUE == hFind)
return;
while(TRUE)
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(FindFileData.cFileName[0] != _T('.'))
{
_tcscpy_s(szFile, MAX_PATH, szPath);
_tcscat_s(szFile, MAX_PATH, _T("\\"));
_tcscat_s(szFile, MAX_PATH, FindFileData.cFileName);
FindFile(szFile);
}
}
else
{
_tcscpy_s(szFile, MAX_PATH, szPath);
_tcscat_s(szFile, MAX_PATH, _T("\\"));
_tcscat_s(szFile, MAX_PATH, FindFileData.cFileName);
}
if(!FindNextFile(hFind,&FindFileData))
break;
}
FindClose(hFind);
}
//获取文件图标
HICON GetFileIcon(LPCTSTR szFile)
{
SHFILEINFO sfi = {0};
SHGetFileInfo(szFile, FILE_ATTRIBUTE_NORMAL, &sfi, sizeof(sfi), SHGFI_ICON|SHGFI_LARGEICON|SHGFI_USEFILEATTRIBUTES);
return sfi.hIcon;
}
创建GUID值,把GUID格式化为字符串代码如下
LPCTSTR GetGuidString()
{
static TCHAR szGuid[128] = { 0 };
static GUIDguid = { 0 };
::CoInitialize(NULL);
::CoCreateGuid(&guid);
_stprintf(szGuid, _T("%08X%04X%04x%02X%02X%02X%02X%02X%02X%02X%02X"),
guid.Data1, guid.Data2, guid.Data3 ,
guid.Data4[0], guid.Data4[1],
guid.Data4[2], guid.Data4[3],
guid.Data4[4], guid.Data4[5],
guid.Data4[6], guid.Data4[7] );
::CoUninitialize();
return szGuid;
}
//获取文件大小
UINT64 GetFileLenght(LPCTSTR szFileName)
{
WIN32_FIND_DATArFileInfo = { 0 };
LARGE_INTEGER rFileSize = { 0 };
HANDLE hFind = FindFirstFile(szFileName, &rFileInfo);
if(hFind != INVALID_HANDLE_VALUE){
rFileSize.LowPart = rFileInfo.nFileSizeLow;
rFileSize.HighPart = rFileInfo.nFileSizeHigh;
FindClose(hFind);
}
return rFileSize.QuadPart;
}
//获取当前系统时区
int GetLocalZone()
{
TIME_ZONE_INFORMATION tzi = { 0 };
GetTimeZoneInformation(&tzi);
int nZone = tzi.Bias / -60;
return nZone;
}
//删除文件或者文件夹(文件夹下所有文件都会删除)
BOOL DeleteFolder(LPCTSTR pszPath)
{
int nRet = 0;
int nLen = 0;
int nBufLen = 0;
TCHAR * szBuffer = NULL;
SHFILEOPSTRUCT rFileOp = { 0 };
ASSERT(pszPath != NULL);
nLen = _tcslen(pszPath);
nBufLen = sizeof(TCHAR)* (nLen + 2);
szBuffer = (TCHAR *)malloc(nBufLen);
if (szBuffer == NULL) return false;
_tcscpy_s(szBuffer, nLen + 2, pszPath);
szBuffer[nLen] = '\0';
szBuffer[nLen + 1] = '\0';//必须要加两个'\0'不然SHFileOperation会报错
rFileOp.fFlags = FOF_ALLOWUNDO | //允许放回回收站
FOF_NOCONFIRMATION | //不出现确认对话框
FOF_NOERRORUI; //不出现错误对话框
rFileOp.pFrom = szBuffer;
rFileOp.pTo = NULL; //一定要是NULL
rFileOp.wFunc = FO_DELETE; //删除操作
nRet = SHFileOperation(&rFileOp);
ASSERT(nRet == 0);
return nRet == 0;
}