2009-10-18 19 views
5

Có cách nào để phát hiện bất cứ khi nào thao tác sao chép bắt đầu trong Windows Explorer hay không.phát hiện hoạt động sao chép Windows Explorer

giống như trong SuperCopier: SuperCopier Website?

và đăng nhập các tệp liên quan đến hoạt động? và như vậy ?

Tôi đã duyệt qua mã Supercopier và tôi không thể tìm thấy phần liên quan đến phát hiện hoạt động sao chép, vì tôi không phải là chất lỏng trong Delphi.

P.S: có vẻ như họ đang sử dụng tiện ích mở rộng Shell ... không chắc chắn.

Trả lời

10

Có, bạn có thể.

Bạn phải triển khai shell extension phải có hook the file copy operation. Có rất nhiều ví dụ về cách làm những điều này trong C++ (sử dụng API Win32 riêng) và cũng sử dụng ngôn ngữ C# hoặc các ngôn ngữ .NET framework khác. Tôi chắc chắn rằng bạn có thể sử dụng Delphi quá nhưng tôi không biết các chi tiết liên quan đến việc thực hiện các cuộc gọi API Win32 ..

Đây là một bài viết chi tiết implementation of a simple shell extension in C#.

Tất nhiên, bạn cũng có thể xem bộ lọc I/O của tệp windows, mặc dù chúng chỉ cho phép bạn quan sát hoạt động của tệp như tạo, sao chép, thay đổi hoặc xóa. Trong .NET tạo một bộ lọc I/O tập tin là tầm thường bằng cách sử dụng System.IO.FileSystemWatcher class và nếu tất cả những gì bạn muốn là phát hiệnlog hoạt động sao chép tệp đó có thể là tất cả những gì bạn cần làm.

LƯU Ý Nếu bạn quyết định thực hiện một phần mở rộng vỏ trong C#, bạn nên biết rằng nó sẽ chỉ làm việc trên các hệ điều hành mà .NET framework đã được cài đặt (phiên bản mà bạn sử dụng để tạo ra các phần mở rộng) - mặc dù hầu hết mọi người bây giờ có ít nhất .NET 1.1, và 2.0 ..

+0

Tôi quan tâm đến việc sử dụng C# .NET để thực hiện điều đó. – Attilah

+0

sau đó hãy xem các liên kết đó. có một chút đọc để làm nhưng việc triển khai các phần mở rộng của trình bao trong C# không quá khó. –

+2

Triển khai Shell Ext trong .NET là một số không http://blogs.msdn.com/junfeng/archive/2005/11/18/494572.aspx. Bạn sẽ cần sử dụng trình bao bọc C++ mỏng + IPC vào quy trình .NET. –

6

Ví dụ về việc tạo ra một bản sao mở rộng móc vỏ có thể được tìm thấy trong thư mục cài đặt delphi \ Demo \ ActiveX \ ShellExt \ copyhook.dpr

ở đây bạn có thêm một ví dụ khác

Tạm biệt.

+0

yeah, đây chắc chắn là con đường để đi vì nó có vẻ dễ dàng hơn và ít đau đớn để viết các công cụ như vậy với Delphi. – Attilah

3

Bạn không cần bất kỳ tiện ích mở rộng Shell nào.
Bạn chỉ cần móc Shell apis.

0

Cách dễ nhất để phát hiện Windows Explorer là kiểm tra Clipboard. Tất nhiên nó không hoạt động trong trường hợp kéo thả, lệnh mcd hoặc TotalCommander.

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