주어진 경로가 드라이브의 로컬 경로와 같지 않은 경우 작동하는 것처럼 보이는 매크로를 사용하기 때문에 먼저 경로를 확인해야합니다. 경로는 대소 문자가 현존하는지 여부입니다 . 불행히도 (내 경우) Directory.Exists()
은 대소 문자를 구분하지 않습니다.FindFirstFileEx는 대소 문자를 구분하지 않습니다.
그래서 나는 을 dwAdditionalAttributes
으로 설정하고 FIND_FIRST_EX_CASE_SENSITIVE을 나타내는 1
을 설정하려고했습니다. 그러나 그것은 나를 위해 작동하지 않는 것 같습니다. 내 로컬 경로는 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