[急,在线等]SDK中怎么在某个文件夹内便历同一个后缀名的所有文件?? MFC的我有了,用CFileFind 和 CString 的,哪位老大给个SDK里可以用的,谢谢谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 FindFirstFileFindFirstFileExFindNextFile FindFirstFile and FindNextFile.U can search the function in msdn. CFileFind finder; BOOL bWorking = finder.FindFile("*.exe"); while (bWorking) { bWorking = finder.FindNextFile(); cout << (LPCTSTR) finder.GetFileName() << endl; } CFileFind 这个不能在SDK里用的呀。 我用过的一个程序,自己修改,因该可以的,----------------------------------------------------------HANDLE hlocalfile; WIN32_FIND_DATA findd; char nowpath[255]; DWORD retLen; FILEINFO fi; char findpath[255];strcat(findpath,"\\*.*"); memset(&findd,0,sizeof(findd)); //得到第一个文件 if((hlocalfile=FindFirstFile( findpath,&findd))==INVALID_HANDLE_VALUE) return -1; //得到文件信息 SHFILEINFO shfi; memset(&shfi,0,sizeof(shfi)); SHGetFileInfo(findd.cFileName, FILE_ATTRIBUTE_NORMAL, &shfi, sizeof(shfi), SHGFI_ICON|SHGFI_USEFILEATTRIBUTES|SHGFI_TYPENAME ); //循环 if (hlocalfile != INVALID_HANDLE_VALUE) { do { //得到文件信息 SHFILEINFO shfi; memset(&shfi,0,sizeof(shfi)); SHGetFileInfo(findd.cFileName, FILE_ATTRIBUTE_NORMAL, &shfi, sizeof(shfi), SHGFI_ICON|SHGFI_USEFILEATTRIBUTES|SHGFI_TYPENAME ); //如果是当前目录或父目录,跳过 if ( ! ( strcmp( findd.cFileName, "." ) ) || ! ( strcmp( findd.cFileName, ".." ) ) ) { continue; } // Check if "." or "..", if not... // Check if its a directory. if ((strcmp(findd.cFileName,_T("."))!=0) && (strcmp(findd.cFileName,_T(".."))!=0)) { if((findd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { char path1[255]; path1[0]=0; // 设置文件夹目录 strcat(nowpath,"\\"); strcat(nowpath,findd.cFileName); strcat(nowpath1,"\\"); strcat(nowpath1,findd.cFileName); //path1 = thispath + "\\"+findd.cFileName; if(strcmp(nowpath,"..")!=0) // 循环调用递归 PeerMyDirSend(s,hEvent,nowpath,nowpath1); //恢复初始用户选择目录 strcpy(nowpath,pathbak); strcpy(nowpath1,pathbak1); } else { //发送文件 strcpy(fi.filename,pathbak); strcat(fi.filename,"\\"); strcat(fi.filename,findd.cFileName); strcpy(fi.filedir,nowpath1); strcat(fi.filedir,"\\"); strcat(fi.filedir,findd.cFileName); fi.rtolDir=false;//is file char filename[255]; strcpy(fi.myfilename,findd.cFileName); PeerMyFileSend(s,hEvent,fi,fi.myfilename); //SendMyDir(s,hEvent,path1,findd.cFileName); } } } while (FindNextFile(hlocalfile, &findd)); // This is a MUST FindClose(hlocalfile); //nowpath=path; // } } else { if(GetLastError()==ERROR_NO_MORE_FILES) return -1; } FILEINFO 是在哪里定义的?? 我给一个简单一点的例子,你试试! struct _finddata_t c_file; long hFile; if( (hFile = _findfirst( "*.aaa", &c_file )) == -1L ) AfxMessageBox( "No files in current directory!" ); else { if(c_file.attrib & _A_SUBDIR) { //子目录 } else { //符合条件的文件 } while( _findnext( hFile, &c_file ) == 0 ) { // 遍历所有文件 if(c_file.attrib & _A_SUBDIR) { } else { } Sleep(1); } _findclose( hFile ); } vc 求助用VC实现类似windows画图的资料 mfc 使用activeX控件的问题,急急急。。。 如何枚举出一个DLL里的函数名字及其入口地址,包括非输出函数? 各位,我毕业设计题目想做网络中数据包的截获与重组技术,请教各位一个问题 关于取字符问题??? 右取 【中秋凑个热闹】大家分享一下如何用MFC做实际项目的经验 怎样解决鼠标移出客户区时的消息捕获问题 怎么在状态栏加个超级连接,就是文字有下滑线,点了之后打开IE上这个网站的那种 关于系统键盘键值的问题?回答给100分 全局钩子dll中,SetTimer与TimerProc怎么用? 完整的拷贝一个文件夹用什么API啊
FindFirstFileEx
FindNextFile
BOOL bWorking = finder.FindFile("*.exe");
while (bWorking)
{
bWorking = finder.FindNextFile();
cout << (LPCTSTR) finder.GetFileName() << endl;
}
我用过的一个程序,自己修改,因该可以的,
----------------------------------------------------------
HANDLE hlocalfile;
WIN32_FIND_DATA findd;
char nowpath[255];
DWORD retLen;
FILEINFO fi;
char findpath[255];
strcat(findpath,"\\*.*");
memset(&findd,0,sizeof(findd));
//得到第一个文件
if((hlocalfile=FindFirstFile( findpath,&findd))==INVALID_HANDLE_VALUE)
return -1;
//得到文件信息
SHFILEINFO shfi;
memset(&shfi,0,sizeof(shfi));
SHGetFileInfo(findd.cFileName,
FILE_ATTRIBUTE_NORMAL,
&shfi, sizeof(shfi),
SHGFI_ICON|SHGFI_USEFILEATTRIBUTES|SHGFI_TYPENAME );
//循环
if (hlocalfile != INVALID_HANDLE_VALUE)
{
do {
//得到文件信息
SHFILEINFO shfi;
memset(&shfi,0,sizeof(shfi));
SHGetFileInfo(findd.cFileName,
FILE_ATTRIBUTE_NORMAL,
&shfi, sizeof(shfi),
SHGFI_ICON|SHGFI_USEFILEATTRIBUTES|SHGFI_TYPENAME );
//如果是当前目录或父目录,跳过
if ( ! ( strcmp( findd.cFileName, "." ) ) || ! ( strcmp( findd.cFileName, ".." ) ) )
{
continue;
}
// Check if "." or "..", if not...
// Check if its a directory.
if ((strcmp(findd.cFileName,_T("."))!=0) && (strcmp(findd.cFileName,_T(".."))!=0))
{
if((findd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
char path1[255];
path1[0]=0;
// 设置文件夹目录
strcat(nowpath,"\\");
strcat(nowpath,findd.cFileName);
strcat(nowpath1,"\\");
strcat(nowpath1,findd.cFileName);
//path1 = thispath + "\\"+findd.cFileName;
if(strcmp(nowpath,"..")!=0)
// 循环调用递归
PeerMyDirSend(s,hEvent,nowpath,nowpath1);
//恢复初始用户选择目录
strcpy(nowpath,pathbak);
strcpy(nowpath1,pathbak1);
}
else
{
//发送文件
strcpy(fi.filename,pathbak);
strcat(fi.filename,"\\");
strcat(fi.filename,findd.cFileName);
strcpy(fi.filedir,nowpath1);
strcat(fi.filedir,"\\");
strcat(fi.filedir,findd.cFileName);
fi.rtolDir=false;//is file
char filename[255];
strcpy(fi.myfilename,findd.cFileName);
PeerMyFileSend(s,hEvent,fi,fi.myfilename);
//SendMyDir(s,hEvent,path1,findd.cFileName);
}
}
}
while (FindNextFile(hlocalfile, &findd));
// This is a MUST
FindClose(hlocalfile);
//nowpath=path;
// }
}
else
{
if(GetLastError()==ERROR_NO_MORE_FILES)
return -1;
}
long hFile; if( (hFile = _findfirst( "*.aaa", &c_file )) == -1L )
AfxMessageBox( "No files in current directory!" );
else
{
if(c_file.attrib & _A_SUBDIR)
{ //子目录
}
else
{ //符合条件的文件
} while( _findnext( hFile, &c_file ) == 0 )
{ // 遍历所有文件
if(c_file.attrib & _A_SUBDIR)
{
}
else
{
}
Sleep(1);
} _findclose( hFile );
}