#include "StdAfx.h" #include "filehelp2.h" #include filehelpImpl2::filehelpImpl2(void) { m_nRef = 0; } filehelpImpl2::~filehelpImpl2(void) { } LONG filehelpImpl2::AddRef() { InterlockedIncrement( &m_nRef ); //增加引用计数 return m_nRef; } LONG filehelpImpl2::Release() { InterlockedDecrement( &m_nRef ); //减少引用计数 //如果为0,删除对象 if( m_nRef == 0 ) { delete this; } return m_nRef; } HRESULT filehelpImpl2::QueryInterface(REFIID riid, void **ppvObject) { if( riid == IID_filefindInterface ) { //*ppvObject = static_cast(this); AddRef( ); } else if( riid == IID_filecompareInterface ) { //*ppvObject = static_cast(this); AddRef( ); } //else if( riid == IID_MyIUnknown ) //{ // *ppvObject = static_cast(this); // AddRef( ); //} return 0; } ////////////////////////////////////////////////////////////////////////// BOOL filehelpImpl2::getall(IN LPCTSTR lpfolder, IN LPCTSTR lpfindext, IN OUT CStringArray *pvtfiles, IN OUT CStringArray *pvtnames, IN OUT CStringArray *pvtnames_noext, IN OUT CStringArray *pvtfolders) { // 路径不存在; if (!PathFileExists(lpfolder)) return FALSE; // 指针空; if (!pvtfiles || !pvtnames || !pvtfolders || !pvtnames_noext) return FALSE; m_pfiles = pvtfiles; m_pnames = pvtnames; m_pfolders = pvtfolders; m_pnames_noext = pvtnames_noext; #if USE_IMGEXT // 判断扩展名有效性; if (!iscorrectext(lpfindext)) return FALSE; #endif findall(lpfolder, lpfindext); return TRUE; } BOOL filehelpImpl2::getsubfolder(IN LPCTSTR lpfolder, IN CStringArray *pvtfolders) { // 路径不存在; if (!PathFileExists(lpfolder)) return FALSE; // 指针空; if (pvtfolders == NULL) return FALSE; m_pfolders = pvtfolders; findsubfolder(lpfolder); return TRUE; } BOOL filehelpImpl2::getallsubfolder(IN LPCTSTR lpfolder, IN CStringArray *pvtfolders) { // 路径不存在; if (!PathFileExists(lpfolder)) return FALSE; // 指针空; if (pvtfolders == NULL) return FALSE; m_pfolders = pvtfolders; findallsubfolder(lpfolder); return TRUE; } ////////////////////////////////////////////////////////////////////////// BOOL filehelpImpl2::getfiles_findin_subfolder(IN LPCTSTR lpfolder, IN LPCTSTR lpfindext, IN CStringArray *pvtfiles) { // 路径不存在; if (!PathFileExists(lpfolder)) return FALSE; // 指针空; if (pvtfiles == NULL) return FALSE; m_pfiles = pvtfiles; #if USE_IMGEXT // 判断扩展名有效性; if (!iscorrectext(lpfindext)) return FALSE; #endif findfiles_findin_subfolder(lpfolder, lpfindext); return TRUE; } BOOL filehelpImpl2::getfiles_findout_subfolder(IN LPCTSTR lpfolder, IN LPCTSTR lpfindext, IN CStringArray *pvtfiles) { // 路径不存在; if (!PathFileExists(lpfolder)) return FALSE; // 指针空; if (pvtfiles == NULL) return FALSE; m_pfiles = pvtfiles; #if USE_IMGEXT // 判断扩展名有效性; if (!iscorrectext(lpfindext)) return FALSE; #endif findfiles_findout_subfolder(lpfolder, lpfindext); return TRUE; } BOOL filehelpImpl2::getfiles_within_subfolder(IN LPCTSTR lpfolder, IN LPCTSTR lpfindext, IN CStringArray *pvtfiles) { // 路径不存在; if (!PathFileExists(lpfolder)) return FALSE; // 指针空; if (pvtfiles == NULL) return FALSE; m_pfiles = pvtfiles; #if USE_IMGEXT // 判断扩展名有效性; if (!iscorrectext(lpfindext)) return FALSE; #endif findfiles_within_subfolder(lpfolder, lpfindext); return TRUE; } ////////////////////////////////////////////////////////////////////////// BOOL filehelpImpl2::getfiles_bynames_findin_subfolder( IN LPCTSTR lpfolder, IN LPCTSTR lpfindext, IN CStringArray &vtnames, IN CStringArray *pvtfiles ) { // 路径不存在; if (!PathFileExists(lpfolder)) return FALSE; // 指针空; if (pvtfiles == NULL) return FALSE; m_pfiles = pvtfiles; #if USE_IMGEXT // 判断扩展名有效性; if (!iscorrectext(lpfindext)) return FALSE; #endif CStringArray vtExts; groupExt(lpfindext,vtExts); findfiles_bynames_findin_subfolder(lpfolder, lpfindext, vtExts, vtnames); return TRUE; } BOOL filehelpImpl2::getfiles_bynames_findout_subfolder( IN LPCTSTR lpfolder, IN LPCTSTR lpfindext, IN CStringArray &vtnames, IN OUT CStringArray *pvtfiles ) { // 路径不存在; if (!PathFileExists(lpfolder)) return FALSE; // 指针空; if (pvtfiles == NULL) return FALSE; m_pfiles = pvtfiles; #if USE_IMGEXT // 判断扩展名有效性; if (!iscorrectext(lpfindext)) return FALSE; #endif CStringArray vtExts; groupExt(lpfindext,vtExts); findfiles_bynames_findout_subfolder(lpfolder, lpfindext, vtExts, vtnames); return TRUE; } BOOL filehelpImpl2::getfiles_bynames_within_subfolder( IN LPCTSTR lpfolder, IN LPCTSTR lpfindext, IN CStringArray &vtnames, IN CStringArray *pvtfiles ) { // 路径不存在; if (!PathFileExists(lpfolder)) return FALSE; // 指针空; if (pvtfiles == NULL) return FALSE; m_pfiles = pvtfiles; #if USE_IMGEXT // 判断扩展名有效性; if (!iscorrectext(lpfindext)) return FALSE; #endif CStringArray vtExts; groupExt(lpfindext,vtExts); findfiles_bynames_within_subfolder(lpfolder, lpfindext, vtExts, vtnames); return TRUE; } ////////////////////////////////////////////////////////////////////////// BOOL filehelpImpl2::getnames_findin_subfolder(IN LPCTSTR lpfolder, IN LPCTSTR lpfindext, IN CStringArray *pvtnames) { // 路径不存在; if (!PathFileExists(lpfolder)) return FALSE; // 指针空; if (pvtnames == NULL) return FALSE; m_pnames = pvtnames; #if USE_IMGEXT // 判断扩展名有效性; if (!iscorrectext(lpfindext)) return FALSE; #endif findnames_findin_subfolder(lpfolder, lpfindext); return TRUE; } BOOL filehelpImpl2::getnames_findout_subfolder(IN LPCTSTR lpfolder, IN LPCTSTR lpfindext, IN CStringArray *pvtnames) { // 路径不存在; if (!PathFileExists(lpfolder)) return FALSE; // 指针空; if (pvtnames == NULL) return FALSE; m_pnames = pvtnames; #if USE_IMGEXT // 判断扩展名有效性; if (!iscorrectext(lpfindext)) return FALSE; #endif findnames_findout_subfolder(lpfolder, lpfindext); return TRUE; } BOOL filehelpImpl2::getnames_within_subfolder(IN LPCTSTR lpfolder, IN LPCTSTR lpfindext, IN CStringArray *pvtnames) { // 路径不存在; if (!PathFileExists(lpfolder)) return FALSE; // 指针空; if (pvtnames == NULL) return FALSE; m_pnames = pvtnames; #if USE_IMGEXT // 判断扩展名有效性; if (!iscorrectext(lpfindext)) return FALSE; #endif findnames_within_subfolder(lpfolder, lpfindext); return TRUE; } ////////////////////////////////////////////////////////////////////////// BOOL filehelpImpl2::getnames_findin_subfolder_ex(IN LPCTSTR lpfolder, IN LPCTSTR lpfindext, IN CStringArray *pvtnames) { // 路径不存在; if (!PathFileExists(lpfolder)) return FALSE; // 指针空; if (pvtnames == NULL) return FALSE; m_pnames_noext = pvtnames; #if USE_IMGEXT // 判断扩展名有效性; if (!iscorrectext(lpfindext)) return FALSE; #endif findnames_findin_subfolder_ex(lpfolder, lpfindext); return TRUE; } BOOL filehelpImpl2::getnames_findout_subfolder_ex(IN LPCTSTR lpfolder, IN LPCTSTR lpfindext, IN CStringArray *pvtnames) { // 路径不存在; if (!PathFileExists(lpfolder)) return FALSE; // 指针空; if (pvtnames == NULL) return FALSE; m_pnames_noext = pvtnames; #if USE_IMGEXT // 判断扩展名有效性; if (!iscorrectext(lpfindext)) return FALSE; #endif findnames_findout_subfolder_ex(lpfolder, lpfindext); return TRUE; } BOOL filehelpImpl2::getnames_within_subfolder_ex(IN LPCTSTR lpfolder, IN LPCTSTR lpfindext, IN CStringArray *pvtnames) { // 路径不存在; if (!PathFileExists(lpfolder)) return FALSE; // 指针空; if (pvtnames == NULL) return FALSE; m_pnames_noext = pvtnames; #if USE_IMGEXT // 判断扩展名有效性; if (!iscorrectext(lpfindext)) return FALSE; #endif findnames_within_subfolder_ex(lpfolder, lpfindext); return TRUE; } ////////////////////////////////////////////////////////////////////////// BOOL filehelpImpl2::getfilesnames_findin_subfolder(IN LPCTSTR lpfolder, IN LPCTSTR lpfindext, IN CStringArray *pvtfiles, IN CStringArray *pvtnames) { // 路径不存在; if (!PathFileExists(lpfolder)) return FALSE; // 指针空; if (pvtnames || !pvtnames) return FALSE; m_pfiles = pvtfiles; m_pnames = pvtnames; #if USE_IMGEXT // 判断扩展名有效性; if (!iscorrectext(lpfindext)) return FALSE; #endif findfilesnames_findin_subfolder(lpfolder, lpfindext); return TRUE; } BOOL filehelpImpl2::getfilesnames_findout_subfolder(IN LPCTSTR lpfolder, IN LPCTSTR lpfindext, IN CStringArray *pvtfiles, IN CStringArray *pvtnames) { // 路径不存在; if (!PathFileExists(lpfolder)) return FALSE; // 指针空; if (pvtnames || !pvtnames) return FALSE; m_pfiles = pvtfiles; m_pnames = pvtnames; #if USE_IMGEXT // 判断扩展名有效性; if (!iscorrectext(lpfindext)) return FALSE; #endif findfilesnames_findout_subfolder(lpfolder, lpfindext); return TRUE; } BOOL filehelpImpl2::getfilesnames_within_subfolder(IN LPCTSTR lpfolder, IN LPCTSTR lpfindext, IN CStringArray *pvtfiles, IN CStringArray *pvtnames) { // 路径不存在; if (!PathFileExists(lpfolder)) return FALSE; // 指针空; if (pvtnames || !pvtnames) return FALSE; m_pfiles = pvtfiles; m_pnames = pvtnames; #if USE_IMGEXT // 判断扩展名有效性; if (!iscorrectext(lpfindext)) return FALSE; #endif findfilesnames_within_subfolder(lpfolder, lpfindext); return TRUE; } ////////////////////////////////////////////////////////////////////////// BOOL filehelpImpl2::getfilesnames_findin_subfolder_ex(IN LPCTSTR lpfolder, IN LPCTSTR lpfindext, IN CStringArray *pvtfiles, IN CStringArray *pvtnames) { // 路径不存在; if (!PathFileExists(lpfolder)) return FALSE; // 指针空; if (pvtnames || !pvtnames) return FALSE; m_pfiles = pvtfiles; m_pnames_noext = pvtnames; #if USE_IMGEXT // 判断扩展名有效性; if (!iscorrectext(lpfindext)) return FALSE; #endif findfilesnames_findin_subfolder_ex(lpfolder, lpfindext); return TRUE; } BOOL filehelpImpl2::getfilesnames_findout_subfolder_ex(IN LPCTSTR lpfolder, IN LPCTSTR lpfindext, IN CStringArray *pvtfiles, IN CStringArray *pvtnames) { // 路径不存在; if (!PathFileExists(lpfolder)) return FALSE; // 指针空; if (pvtnames || !pvtnames) return FALSE; m_pfiles = pvtfiles; m_pnames_noext = pvtnames; #if USE_IMGEXT // 判断扩展名有效性; if (!iscorrectext(lpfindext)) return FALSE; #endif findfilesnames_findout_subfolder_ex(lpfolder, lpfindext); return TRUE; } BOOL filehelpImpl2::getfilesnames_within_subfolder_ex(IN LPCTSTR lpfolder, IN LPCTSTR lpfindext, IN CStringArray *pvtfiles, IN CStringArray *pvtnames) { // 路径不存在; if (!PathFileExists(lpfolder)) return FALSE; // 指针空; if (pvtnames || !pvtnames) return FALSE; m_pfiles = pvtfiles; m_pnames_noext = pvtnames; #if USE_IMGEXT // 判断扩展名有效性; if (!iscorrectext(lpfindext)) return FALSE; #endif findfilesnames_within_subfolder_ex(lpfolder, lpfindext); return TRUE; } ////////////////////////////////////////////////////////////////////////// BOOL filehelpImpl2::getfiles_withthumbnail_findin_subfolder( IN LPCTSTR lpfolder, IN LPCTSTR lpfindext, IN CStringArray *pvtfiles, IN CStringArray *pvtfiles_sth, IN CStringArray *pvtfiles_mth ) { // 路径不存在; if (!PathFileExists(lpfolder)) return FALSE; // 指针空; if ( !pvtfiles || !pvtfiles_sth || !pvtfiles_mth) return FALSE; m_pfiles = pvtfiles; m_pvtfiles_sth = pvtfiles_sth; m_pvtfiles_mth = m_pvtfiles_mth; #if USE_IMGEXT // 判断扩展名有效性; if (!iscorrectext(lpfindext)) return FALSE; #endif findfiles_withthumbnail_findin_subfolder(lpfolder, lpfindext); return TRUE; } BOOL filehelpImpl2::getfiles_withthumbnail_findout_subfolder( IN LPCTSTR lpfolder, IN LPCTSTR lpfindext, IN CStringArray *pvtfiles, IN CStringArray *pvtfiles_sth, IN CStringArray *pvtfiles_mth ) { // 路径不存在; if (!PathFileExists(lpfolder)) return FALSE; // 指针空; if ( !pvtfiles || !pvtfiles_sth || !pvtfiles_mth) return FALSE; m_pfiles = pvtfiles; m_pvtfiles_sth = pvtfiles_sth; m_pvtfiles_mth = m_pvtfiles_mth; #if USE_IMGEXT // 判断扩展名有效性; if (!iscorrectext(lpfindext)) return FALSE; #endif findfiles_withthumbnail_findout_subfolder(lpfolder, lpfindext); return TRUE; } BOOL filehelpImpl2::getfiles_withthumbnail_within_subfolder( IN LPCTSTR lpfolder, IN LPCTSTR lpfindext, IN CStringArray *pvtfiles, IN CStringArray *pvtfiles_sth, IN CStringArray *pvtfiles_mth ) { // 路径不存在; if (!PathFileExists(lpfolder)) return FALSE; // 指针空; if ( !pvtfiles || !pvtfiles_sth || !pvtfiles_mth) return FALSE; m_pfiles = pvtfiles; m_pvtfiles_sth = pvtfiles_sth; m_pvtfiles_mth = m_pvtfiles_mth; #if USE_IMGEXT // 判断扩展名有效性; if (!iscorrectext(lpfindext)) return FALSE; #endif findfiles_withthumbnail_within_subfolder(lpfolder, lpfindext); return TRUE; } ////////////////////////////////////////////////////////////////////////// BOOL filehelpImpl2::comparename_2file(IN LPCTSTR file1, IN LPCTSTR file2) { if (!file1 || !file2) return FALSE; if (!PathFileExists(file1) || !PathFileExists(file2)) return FALSE; CString strfile1 = file1; CString strfile2 = file2; strfile1 = getfilename(strfile1); strfile2 = getfilename(strfile2); return !strfile1.CompareNoCase(strfile2); } BOOL filehelpImpl2::comparename_findin_names(IN LPCTSTR name) { if (!name || m_pnames_noext) return FALSE; CString strname = name; strname.MakeLower(); for (int i = 0; i < m_pnames_noext->GetSize(); i++ ) { m_pnames_noext->ElementAt(i).MakeLower(); if (m_pnames_noext->ElementAt(i).CompareNoCase(strname) == 0) { // 打印日志,或提示用户同名文件路径在哪; return TRUE; } } return FALSE; } BOOL filehelpImpl2::comparename_findin_names(IN LPCTSTR name, IN CStringArray &vtnames) { if (!name) return FALSE; CString strname = name; strname.MakeLower(); for (int i = 0; i < vtnames.GetSize(); i++ ) { vtnames.ElementAt(i).MakeLower(); if (vtnames.ElementAt(i).CompareNoCase(strname) == 0) { // 打印日志,或提示用户同名文件路径在哪; return TRUE; } } return FALSE; } BOOL filehelpImpl2::comparename_findin_files(IN LPCTSTR name, IN CStringArray &vtfiles) { if (!name) return FALSE; int nIndex = 0; CString strfile; CString strname = name; for (int i = 0; i < vtfiles.GetSize(); i++ ) { if ((nIndex = vtfiles.ElementAt(i).Find(_T('\\'))) != -1) { strfile = vtfiles.ElementAt(i).Mid(nIndex); if (strfile.CompareNoCase(strname) == 0) { // 打印日志,或提示用户同名文件路径在哪; return TRUE; } } } return FALSE; } BOOL filehelpImpl2::comparename_findin_folder(IN LPCTSTR name, IN LPCTSTR folder, IN LPCTSTR findext, IN BOOL bsubfolder) { #if USE_IMGEXT if (!name || !iscorrectext(findext)) return FALSE; #else if ( !name ) return FALSE; #endif CStringArray vtnames; if (bsubfolder) { if (!getnames_findin_subfolder_ex(folder, findext, &vtnames)) return FALSE; } else { if (!getnames_findout_subfolder_ex(folder, findext, &vtnames)) return FALSE; } return comparename_findin_names(name, vtnames); } INT filehelpImpl2::comparenames_findin_names(IN CStringArray& vtSrcnames, IN CStringArray& vtDesnames, OUT CStringArray *pvtIsonym /* = NULL */) { if (vtSrcnames.GetSize() == 0 || vtDesnames.GetSize() == 0) return 0; INT nCount = 0; for (int i = 0; i < vtSrcnames.GetSize(); i++) { for (int n = 0; n < vtDesnames.GetSize(); n++) { if (vtSrcnames.ElementAt(i).CompareNoCase(vtDesnames.ElementAt(n)) == 0) { nCount++; if (pvtIsonym) pvtIsonym->Add(vtSrcnames.ElementAt(i)); break; } } } return nCount; } INT filehelpImpl2::comparenames_findin_files(IN CStringArray& vtnames, IN CStringArray& vtfiles, IN LPCTSTR findext, OUT CStringArray *pvtIsonym /* = NULL */) { if (vtnames.GetSize() == 0 || vtfiles.GetSize() == 0) return 0; #if USE_IMGEXT if (!iscorrectext(findext)) return 0; #endif INT nCount = 0; for (int i = 0; i < vtnames.GetSize(); i++) { if (comparename_findin_files(vtnames.ElementAt(i), vtfiles)) { if (pvtIsonym) pvtIsonym->Add(vtnames.ElementAt(i)); nCount++; } } return nCount; } INT filehelpImpl2::comparenames_findin_folder(IN CStringArray& vtnames, IN LPCTSTR folder, IN BOOL bsubfolder, IN LPCTSTR findext, OUT CStringArray *pvtIsonym /* = NULL */) { if (vtnames.GetSize() == 0 || !PathFileExists(folder)) return 0; #if USE_IMGEXT if (!iscorrectext(findext)) return 0; #endif CStringArray vtnames2; if (bsubfolder) { getnames_findin_subfolder(folder, findext, &vtnames2); } else { getnames_findout_subfolder(folder, findext, &vtnames2); } return comparenames_findin_names(vtnames, vtnames2, pvtIsonym); } #if 1 ////////////////////////////////////////////////////////////////////////// BOOL filehelpImpl2::comparefile_findin_names(IN LPCTSTR file, IN CStringArray& vtnames) { if (vtnames.GetSize() == 0) return FALSE; if (!file || !PathFileExists(file)) return FALSE; CString strfile = file; CString name = getfilename(strfile); return comparename_findin_names(name, vtnames); } BOOL filehelpImpl2::comparefile_findin_files(IN LPCTSTR file, IN CStringArray& vtfiles, IN LPCTSTR findext) { if (!file || !PathFileExists(file)) return FALSE; #if USE_IMGEXT if (!iscorrectext(findext)) return FALSE; #endif CString strfile = file; CString name = getfilename(strfile); // 过滤掉不需要的扩展名; keepdownext(findext, vtfiles); return comparename_findin_files(name, vtfiles); } BOOL filehelpImpl2::comparefile_findin_folder(IN LPCTSTR file, IN LPCTSTR folder, IN BOOL bsubfolder, IN LPCTSTR findext) { if (!file || !PathFileExists(file) || !folder || !PathFileExists(folder)) return FALSE; #if USE_IMGEXT if (!iscorrectext(findext)) return FALSE; #endif CString strfile = file; CString name = getfilename(strfile); CStringArray vtnames; if (bsubfolder) { getnames_findin_subfolder_ex(folder, findext, &vtnames); } else { getnames_findout_subfolder_ex(folder, findext, &vtnames); } return comparename_findin_names(name, vtnames); } INT filehelpImpl2::comparefiles_findin_files(IN CStringArray &vtfiles1, IN CStringArray &vtfiles2, IN LPCTSTR findext, OUT CStringArray *pvtIsonym /* = NULL */) { if (vtfiles1.GetSize() == 0 || vtfiles2.GetSize() == 0) return 0; #if USE_IMGEXT if (!iscorrectext(findext)) return 0; #endif // 过滤掉不需要的扩展名; keepdownext(findext, vtfiles1); // 过滤掉不需要的扩展名; keepdownext(findext, vtfiles2); INT nCount = 0; CString name; for (int i = 0; i < vtfiles1.GetSize(); i++) { name = getfilename(vtfiles1.ElementAt(i)); if (comparename_findin_files(name, vtfiles2)) { if (pvtIsonym) pvtIsonym->Add(name); nCount++; } } return nCount; } INT filehelpImpl2::comparefiles_findin_folder(IN CStringArray &vtfiles, IN LPCTSTR folder, IN BOOL bsubfolder, IN LPCTSTR findext, OUT CStringArray *pvtIsonym /* = NULL */) { if (vtfiles.GetSize() == 0 || !folder || !PathFileExists(folder)) return 0; #if USE_IMGEXT if (!iscorrectext(findext)) return 0; #endif CStringArray vtnames; if (bsubfolder) { getnames_findin_subfolder_ex(folder, findext, &vtnames); } else { getnames_findout_subfolder_ex(folder, findext, &vtnames); } return comparenames_findin_files(vtnames, vtfiles, findext, pvtIsonym); } INT filehelpImpl2::comparefolderself(IN LPCTSTR folder, IN LPCTSTR findext, OUT CStringArray *pvtIsonym /* = NULL */) { OutputDebugString(_T("\n")); #if USE_IMGEXT if (!folder || !PathFileExists(folder) || !iscorrectext(findext)) return 0; #else if (!folder || !PathFileExists(folder) ) return 0; #endif CStringArray vtsubfolders; vtsubfolders.Add(folder); // 包含当前目录; getsubfolder(folder, &vtsubfolders); int n = vtsubfolders.GetSize(); CStringArray *pvtfiles = new CStringArray[n]; for (int i = 0; i < vtsubfolders.GetSize(); i++) { getfiles_findin_subfolder(vtsubfolders.ElementAt(i), findext, &pvtfiles[--n]); } CStringArray vtnames; n = vtsubfolders.GetSize(); CString name; for (int i = 0; i < n; i++) { for (int k = 0; k < pvtfiles[i].GetSize(); k++) { name = getfilename(pvtfiles[i].ElementAt(k)); if (comparename_findin_names(name, vtnames)) { // 打印日志,提示客户重名的相片; OutputDebugString(pvtfiles[i].ElementAt(k)); OutputDebugString(_T("")); pvtIsonym->Add(pvtfiles[i].ElementAt(k)); } else { vtnames.Add(name); } } } if (pvtfiles) delete []pvtfiles; pvtfiles = NULL; return 0; } INT filehelpImpl2::comparefolder_findin_folder(IN LPCTSTR folder1, IN LPCTSTR folder2, IN BOOL bsubfolder, IN LPCTSTR findext, OUT CStringArray *pvtIsonym /* = NULL */) { return 0; } #endif