這一段程式碼是可以取得指定目錄及其子目錄下,所有副檔名為 .url 的檔案 (沒錯,這就是拿來掃瞄 IE 我的最愛),取得的所有檔名會存放在一個名叫 sList 的 StringList 裡頭。



void __fastcall TForm1::LoadFavorite(AnsiString Dir, TStringList *sList) // Dir 就是你要掃瞄的目錄, sList 拿來存放檔名

{

WIN32_FIND_DATA filedata; // Structure for file data

HANDLE filehandle; // Handle for searching

AnsiString szFileName, szDir;

szDir = IncludeTrailingPathDelimiter(Dir); // 確保最後有反斜線



filehandle = FindFirstFile((szDir + "*.*").c_str(), &filedata); // 因為我們要包含子目錄,所以要用 *.*,不然直接用 *.url 就行了

if (filehandle != INVALID_HANDLE_VALUE)

{

do

{

/* 不處理隱藏檔及 . 跟 .. */

if ((filedata.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) != 0 ||

strcmp(filedata.cFileName, ".") == 0 ||

strcmp(filedata.cFileName, "..") == 0)

continue;

/* 若是資料夾 */

if ((filedata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0)

{

szFileName = szDir + AnsiString(filedata.cFileName);// 資料夾完整路徑

Application->ProcessMessages();

LoadFavorite(szFileName); // 遞迴找下一層目錄

}

else if (ExtractFileExt(filedata.cFileName).LowerCase() == ".url")// 若找到的檔案的副檔名是 .url

{

szFileName = szDir + AnsiString(filedata.cFileName);

sList->Add(szFileName); // 將完整路徑加到 sList 裡頭

Application->ProcessMessages();

}

} while (FindNextFile(filehandle, &filedata));

FindClose(filehandle);

}

}


創作者介紹
創作者 Nelson 的頭像
Nelson

Nelson 的小世界

Nelson 發表在 痞客邦 留言(0) 人氣()