Windows 탐색기의 이름 바꾸기 이벤트로 내 프로그램 연결하기

StackOverflow https://stackoverflow.com/questions/24644

  •  09-06-2019
  •  | 
  •  

문제

사용자가 파일 이름을 바꿀 때 어떤 언어로든 내 프로그램을 연결하는 방법이 있습니까?

예를 들어:사용자는 파일 이름을 바꾸고 Enter 키를 누르거나 클릭하여 이름 바꾸기 작업을 확인합니다.파일 이름이 실제로 변경되기 전에 내 프로그램은 이 이벤트를 "수신"하고 "C: est\file.txt의 이름을 C: est est.txt로 바꾸시겠습니까?"라는 메시지를 표시합니다.

나는 이것이 C++, C# 또는 .NET에서 가능하다고 생각/희망하고 있습니다.하지만 어디서 찾아야 할지 전혀 모르겠습니다.

도움이 되었습니까?

해결책

아마도 다음을 사용하여 이 문제를 해결할 수 있습니다. FileSystemWatcher 클래스 .NET 프레임워크에서.

수업 발언에서:

파일 또는 디렉토리의 이름을 바꾸거나 삭제하거나 생성 할 수 있습니다.예를 들어, 텍스트 파일의 이름을 바꾸는 것을 확인하려면 필터 속성을 "*.txt"로 설정하고 매개 변수에 이름이 이름 바뀌면서 WaitforCchanged 메소드를 호출하십시오.

다른 팁

내 추측으로는 이것이다. ~ 아니다 가능해요, 찾았어요 이것 이는 폴더에 대한 작업(이름 바꾸기 포함)을 모니터링하기 위한 것이지만 파일에 대해서는 유사한 방법이 없는 것 같습니다.

@Richard, FileSystemWatcher는 변경 사항을 모니터링하기만 하면 좋지만 변경 사항을 중단해야 할 경우 유용합니다.

IFileOperationProgressSink.PreRenameItem 내가 아는 가장 가까운 지원입니다.불행하게도 이는 Explorer에 연결되지 않으므로 자신만의 용도로만 사용할 수 있습니다. IFileOperation 행위.필요에 따라 쉘 확장을 작성하여 직접 수행할 수 있습니다. ConfirmRename (또는 뭔가) 그리고 거기에서 분기합니다.

그렇지 않으면, 당신은 후킹을 보고 있는 것입니다. SHFileOperation, 제 생각에는.Explorer.exe로 로드되므로 이 작업은 비관리 코드에서 수행되어야 합니다.Vista의 경우 이는 다음으로 변경되었습니다. IFileOperation - 이는 아마도 생성을 연결하고 모형을 전달해야 함을 의미합니다.

개인적으로 이름 변경을 말씀하신 이후로 빌헬름텔의 생각 확인의 ~ 후에 변경하고 필요한 경우 실행 취소하는 것이 가장 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top