关于文件拷贝粘贴的剧难问题 ( 积分: 100 )

  • 主题发起人 主题发起人 墨剑
  • 开始时间 开始时间
拖当然容易,支持CTRL+C和CTRL+v难而已,既然觉得不成比例,就放弃这种做法咯。
什么qqt无非是先下载到一个指定地方再覆盖而已,没什么技术。
 
能不能给个从我的软件把文件拖到资源管理器的例子呢?
 
拖动的时候先把文件下载来到某个地方,然后写把所有文件路径写入剪贴板。
再向目标发送WM_PASTE事件就是最简单的方法了。
不用Hook的话你要对windows标准操作,就只能这样。
 
自己控制啊,自己软件里的操作成功后做标。。。。
 
拖动正如你们所说的这样.但有一点不明白的是,我如何知道是把文件拖到哪儿去了? 这一点很重要: 一.可以免去把文件放入临时目录再拷贝的过程,节约时间 二,拖动有很多种情况,比如拖动到IE地址栏啊,打开的文本文件啊都是可以接受的,但是我只希望是拖动到资源管理器里面我才进行处理.
 
正因不知道把文件拖到哪里去,所以才是拖的瞬间就开始下载到临时目录,这一点很重要,无法避免的, 更不存在所谓节省时间。

文件下载完成后,把地址写入剪贴版,剩下的事情就是发送WM_paste消息,其它东西Explorer会帮你完成的了,就算你是拖到IE地址栏,那应该就不会有什么释放发生。拖到资源管理器的话就会实现文件copy
 
學習學習。不太清楚。
 
拖的瞬间? 在哪个事件里面触发呀?
 
你总知道你自己拖了什么文件出来吧,就是那个事件。
 
郁闷中,从listview中从左边拖到右边,也会触发...这可不希望看到. 所以正在想从鼠标位置来判断是否是拖动到外面程序. 但是如果有的时候是要拖动到比如qq共享里面,而如果qq共享那个窗体设置为顶层窗体而又在我的程序上方(其位置包含在我的窗体的位置里面),那就拖不了了.白兄有何高见?
 
拖不了没关系,关键是只要你拖了那个事件就会发生,剩下的事情就由WM_PASTE处理,所以关键是你能提供让WM_PASTE执行的条件。
一般来说除了explorer之外别的程序不会对wm_paste处理为粘贴文件的,所以无论你拖到什么地方都不会有问题。
 
如果是注册了接受ole拖动的程序,你可以把文件拖动到任务栏上那个程序图标处,稍微等会,然后这个程序就会被系统切换到前台来的。然后拖进去就行。
 
问题是我本身用的listview也支持拖入文件
 
反正你的LISTVIEW不支持paste文件,怕什么
 
我的LISTVIEW也是支持paste的啊
 
最后 GetCursorPos(CurPoint);
if WindowFromPoint(CurPoint)<>listview1.Handle;
搞定算了.
这个问题得到了好多富翁的回答,感觉好好.散分了.
 
还是不明白吗?除非你的listview可以完全兼容explorer的wm_paste,否则是不会造成影响的。如果你能完全兼容,就不用在这里问了。
 
还是希望能得到鼠标位置的文件夹路径..下个帖子开
 
后退
顶部