由於我使用宏似乎工作,如果給定的路徑大小寫不等於驅動器上的本地路徑,我首先需要驗證路徑是否存在或不存在。不幸的是(在我的情況下)Directory.Exists()
不區分大小寫。FindFirstFileEx不操作區分大小寫
所以我試着FindFirstFileEx與dwAdditionalAttributes
設置爲1
其中代表FIND_FIRST_EX_CASE_SENSITIVE。但它似乎不適合我。我的本地路徑是C:\Dir1\Dir2\Dir3
。我比較的路徑是C:\dir1\Dir2\Dir3
。不幸的是,我總是得到Dir3
。如果案件不匹配,我會期待一個空的結果。
我的錯是什麼?
string dir = @"C:\Dir1\Dir2\Dir3" + '\0';
int FIND_FIRST_EX_CASE_SENSITIVE = 1;
WIN32_FIND_DATA fi;
IntPtr h = FindFirstFileEx(dir,
FINDEX_INFO_LEVELS.FindExInfoStandard,
out fi,
FINDEX_SEARCH_OPS.FindExSearchNameMatch,
IntPtr.Zero,
FIND_FIRST_EX_CASE_SENSITIVE);
您實際路徑是一樣的,你要作爲參數傳遞的路徑。這是否是一個錯字? – ken2k
對我來說,似乎應該以另一種方式解決原始問題,而不是在不區分大小寫的環境中依賴文件系統對象的大小寫。什麼不適用於這個宏? –
@ ken2k謝謝,我的錯。 @ 0xA3宏將停止擴展文件夾瀏覽器對話框中的文件夾,直至遇到不匹配的情況。我無法改變宏觀本身。 – theknut