登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

涤心斋

淡泊以明志,宁静以致远!

 
 
 

日志

 
 

剪贴板剪切文件的完美解决(C#版)  

2008-08-27 03:21:09|  分类: Windows Shell编 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
  剪贴板剪切文件的完美解决(C版) - 伯平 - 涤心斋剪贴板剪切文件的完美解决(C版) - 伯平 - 涤心斋为了找这个答案,我从下午一直到深夜3:10。终于找到了。万岁。用百度搜,无论我怎么搜法,都是炒现饭。人人都说的一个样。前面那篇VC的代码,实在翻不成C#,结构体、常数、API声明的事搞得我头都大了。不得己只好搜外文资料。果然,一下子就在codeproject搜到了。点此处查看原始资料
  实现的代码不多:
        /// <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);
        }
  终于搞定了。这是一场意志的考验啊。当得到答案的时候,我差点热泪盈眶。5555555……
  总结。剪切的问题难就难在要设那个标志位。而这个设法dotnet并不提供明显的支持。文件的剪切有两大关键:
  一、把文件路径的列表SetData到剪贴板。
  二、把标志信息也按照一定的格式SetData到剪贴板
  上面代码我己测试通过:VS2008+.net 2.0+xp sp2
  评论这张
 
阅读(3856)| 评论(7)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018