2009-10-18 52 views
5

在Windows資源管理器中何時開始複製操作時,是否有任何方法檢測?檢測Windows資源管理器複製操作

有點像SuperCopier:SuperCopier Website

和涉及操作的日誌文件?這樣?

我瀏覽過超級複製代碼,找不到處理檢測複製操作的部分,因爲我在Delphi中不流暢。

P.S:看起來他們正在使用外殼擴展...不知道。

回答

10

是的,你可以。

您必須執行shell extension必須hook the file copy operation。有很多關於如何在C++中使用這些東西(使用本地Win32 API)以及使用C#或其他.NET框架語言的示例。我相信你也可以使用德爾福,但我不知道使Win32 API調用涉及的細節..

這裏有一篇文章詳細說明了implementation of a simple shell extension in C#

當然,你也可能想看看windows文件I/O過濾器,雖然它們只允許你觀察文件操作,如創建,複製,更改或刪除。在.NET中使用System.IO.FileSystemWatcher class創建文件I/O篩選器是微不足道的,如果您只想要檢測日誌這樣的文件複製操作可能是您所需要做的。

注意如果您決定在C#中實現一個shell擴展,您應該知道它只能在已安裝.NET框架的操作系統上工作(您用來創建擴展的版本) - 但現在大多數人至少有NET 1.1和2.0 ..

+0

我感興趣的是使用C#.NET來做到這一點。 – Attilah 2009-10-18 17:25:06

+0

然後看看這些鏈接。有一點點閱讀需要做,但在C#中實現shell擴展並不難。 – 2009-10-18 17:33:08

+2

在.NET中實現Shell Ext是一個不可否認的問題 http://blogs.msdn.com/junfeng/archive/2005/11/18/494572.aspx。 您將需要使用精簡的C++ wrapper + IPC到.NET進程中。 – 2009-10-18 17:35:50

6

創建副本鉤外殼擴展的例子可以在安裝delphi的文件夾中找到\演示\的ActiveX \ ShellExt \ copyhook.dpr

在這裏你還有另外一個例子

再見。

+0

是的,這當然是一種前進的方式,因爲使用Delphi編寫這樣的工具似乎更容易,也更不痛苦。 – Attilah 2009-10-19 16:12:06

3

您不需要任何Shell擴展。
你只需要鉤殼牌apis。

0

檢測Windows資源管理器的最簡單方法是檢查Clipboard。當然,它不適用於拖放案例,mcd命令或TotalCommander。