比如c:\a.txt剪切到d:\a.txt,就想监控获取到c:\a.txt这个路径值。FileSystemWatcher可以监控文件,但只能监控文件发生后的时间,如Changed事件,获取的FullPath是后者的路径,即d:\a.txt。

解决方案 »

  1.   

    http://topic.csdn.net/u/20101221/14/2e973072-df78-4cf8-988a-54af23d976af.html
      

  2.   

    // <summary>
            /// 复制或剪切文件至剪贴板
            /// </summary>
            /// <param name="files">文件路径的数组</param>
            /// <param name="cut">是否剪切true为剪切,false为复制</param>
            void CopyToClipboard(string[] files,bool cut)
            {
                if (files == null) return;            IDataObject data = new DataObject(DataFormats.FileDrop, files);
                MemoryStream memo = new MemoryStream(4);
                byte[] bytes = new byte[] { (byte)(cut ? 2 : 5), 0, 0, 0 };
                memo.Write(bytes, 0, bytes.Length);
                data.SetData("Preferred DropEffect", memo);
                Clipboard.SetDataObject(data);
            }参考
      

  3.   

                foreach (string s in Clipboard.GetFileDropList())
                {
                    Console.WriteLine(s);
                }
    GetFileDropList可以得到复制的文件路径
      

  4.   


    那我要什么方法来捕获粘贴事件呢,因为,如果还用FileSystemWatcher的Changed事件来触发处理,那此时剪切板的内容已是空了。
      

  5.   

    http://www.codeproject.com/KB/clipboard/ClipSpyPlus.aspxhttp://www.radsoftware.com.au/articles/clipboardmonitor.aspxhttp://www.codeproject.com/KB/DLL/WindowsHookLib.aspxClipboard Monitor
      

  6.   


    Many thanks.It's very useful.