2014-02-18 192 views
1

我正在创建一个管理某些文件的简单程序,该程序必须跟踪用户所做的文件移动。监视Windows资源管理器事件

(我不是在此阶段捕获所有正在运行的WINDOS资源管理器的窗口和关于保持始终在托盘栏激活程序担心,但我可能会问,后来在另外一个问题)

所以,我需要的是简单的:

  • 启动Windows资源管理器通过编程
  • 监控所有的文件移动,创造和排除(由用户该窗口内制造)

是否有与C#一起使用的API?

P.S:这是一个Winforms应用程序,所以如果还有其他方法可以做到这一点,他们将不胜感激。

谢谢。

+0

你确实需要使用Windows资源管理器的僵尸副本?或文件跟踪是您的主要任务? –

+1

类似[this](http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher%28v=vs.110%29.aspx)? – Nasreddine

+0

文件跟踪是主要任务。我只是认为使用Windows资源管理器会更容易,看起来好像有更好的选择... –

回答

2

可以使用FileSystemWatcher

要初始化FileSystemWatcher

FileSystemWatcher fileSystemWatcher = new FileSystemWatcher(@"E:\TestDir"); 
fileSystemWatcher.Changed += OnChanged; 
fileSystemWatcher.Created += OnChanged; 
fileSystemWatcher.Deleted += OnChanged; 
fileSystemWatcher.Renamed += OnChanged; 
fileSystemWatcher.EnableRaisingEvents = true; 

而且给onChanged-事件:

private static void OnChanged(object sender, FileSystemEventArgs e) 
    { 
     WatcherChangeTypes watcherChangeTypes = e.ChangeType; 
     string fullPath = e.FullPath; 
     string name = e.Name; 
    } 
+0

仍然不会处理如何检测用户在Windows资源管理器窗口中所做的更改 –

+0

@AdrianSalazar在结尾处查看示例的链接 –

+0

如果您在每个可用的逻辑驱动器上实施FileSystemWatcher。然后它会在技术上检测文件系统中所做的任何更改。因此也在Windows资源管理器窗口中。无论如何,没有其他方式可以检测到变化。 – woutervs