2008-08-23 29 views
7

Có cách nào, bằng bất kỳ ngôn ngữ nào, để nối chương trình của tôi khi người dùng đổi tên tệp không?Hooking chương trình của tôi với sự kiện đổi tên của cửa sổ thám hiểm

Ví dụ: Người dùng đổi tên tệp và nhấn enter (hoặc nhấp chuột) để xác nhận hành động đổi tên. TRƯỚC KHI tệp thực sự được đổi tên, chương trình của tôi "nghe" sự kiện này và bật lên một thông báo cho biết "Bạn có chắc chắn muốn đổi tên C: \ test \ file.txt thành C: \ test \ test.txt?".

Tôi đang nghĩ/hy vọng điều này là có thể với C++, C# hoặc .NET .. Nhưng tôi không có bất kỳ đầu mối nào để tìm kiếm.

Trả lời

5

Bạn có thể giải quyết vấn đề này bằng cách sử dụng khung công tác .NET FileSystemWatcher class.

Từ những nhận xét lớp:

Bạn có thể xem cho đổi tên, xóa, hoặc tạo ra các tập tin hoặc thư mục. Ví dụ: để xem đổi tên các tệp văn bản , hãy đặt thuộc tính Bộ lọc thành "* .txt" và gọi phương thức WaitForChanged với thông số được chỉ định cho tham số .

0

Tôi đoán rằng đây là không có thể, tôi đã tìm thấy this cho hoạt động giám sát (bao gồm đổi tên) trên một thư mục, nhưng dường như không phải là phương pháp tương tự cho tệp.

@Richard, FileSystemWatcher rất tốt nếu bạn chỉ cần giám sát các thay đổi, nhưng anh ấy cần phải ngắt chúng mà không thể thực hiện được.

0

IFileOperationProgressSink.PreRenameItem là điều được tôi hỗ trợ gần nhất. Thật không may, nó không phải là một móc vào Explorer - vì vậy bạn chỉ có thể sử dụng nó cho các hành động IFileOperation của riêng bạn. Tùy thuộc vào nhu cầu của bạn, bạn có thể viết một phần mở rộng vỏ để làm ConfirmRename của riêng bạn (hoặc một cái gì đó), và chi nhánh từ đó.

Nếu không, bạn đang tìm kiếm hooking SHFileOperation, tôi nghĩ vậy. Điều này sẽ phải được thực hiện trong mã không được quản lý, vì bạn sẽ được tải vào Explorer.exe. Đối với Vista, điều này đã được thay đổi thành IFileOperation - điều này có thể có nghĩa là bạn sẽ phải tạo ra nó và vượt qua mô hình của bạn.

Cá nhân, tôi nghĩ vì bạn đang đổi tên, wilhelmtell's idea xác nhận sau thay đổi và hoàn tác thay đổi nếu cần thiết là ý tưởng tốt nhất.

Các vấn đề liên quan