幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2374|回复: 6

复制粘贴的问题

[复制链接]

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2007-9-26 12:46:59 | 显示全部楼层 |阅读模式
简单说吧。。。

windows里复制粘贴文件呢   。。。。。    如果这样的话。。。。就会报错说源文件找不到

步骤  复制某文件
      然后无聊的改了该文件所在文件夹的名字
      在在别的地方点粘贴

      就这样。。一定会报错。。源文件不存在。。谁都知道的事情 [s:5]

所以我想这样。。做个东西。。把要复制的文件存到内存中。。。然后调出来写到硬盘里。。释放内存

不知这样能做到吗?我的意思是即使改变了文件夹的名字也能粘贴出来

我不太懂哈。。大家表笑话我。。。 [s:6]
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2007-9-26 14:14:55 | 显示全部楼层
当然可以做到了。但实际应用中,更多是采用磁盘来缓存的方式。
就像winrar的那个功能,你可以不用解压就直接运行压缩包里的程序。事实上它是把文件解压到一个temp目录中,然后运行的。你复制的时候也一样,可以先把文件复制放在一个临时的地方,粘贴的时候,把那个临时文件再复制过来,退出的时候清除那个临时文件就行了。如果文件不大的话,放在内存中也是可以的。
え~え~お!!!
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2007-9-26 17:42:48 | 显示全部楼层
其实。。我就是想知道放到内存里怎么做呢?文件大约是几K到几百K那么大

请帮帮忙吧。。。

鄙人能力有限,,根本不会做。。。

先谢谢大家哈。。。麻烦大家了
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

8

主题

215

帖子

2223

积分

⑥精研

积分
2223
发表于 2007-9-26 20:22:40 | 显示全部楼层
Windows自带的clipboard并不大,在NT系上最好是不要超过128KB,所以如果要把文件内容整个放进内存缓存的话,即使自定义一种格式并注册到clipboard上也不太好.标准clipboard一般只存放文字,图片,Office对象,文件名之类.下面假设不使用Windows自带的clipboard.

应对LZ说的情况,有好几种思路:
1. 写一个程序挂全局钩子,监听剪贴版消息,如果发现是对文件的剪贴板操作,则对其路径监视.
2. 写一个程序挂全局钩子,监听剪贴板消息,如果发现是对文件的写入剪贴板操作,并且文件大小小于一个阈值,
则实际打开文件,将文件内容和文件名保存在自定义的内存区域中;如果发现有读出剪贴板的操作,则将文件内容以原文件名写出,并在合适的时候清理先前申请的内存区域.

申请内存区域的方法,最简单的malloc或者new就OK.另外实现一个缓存也可以.
挂钩子的方法请另外查资料吧.
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2007-9-26 21:06:32 | 显示全部楼层
完全不懂。。。。我不想要那种监听复制剪切之类的。。。就是我输入文件路径就OK
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

8

主题

215

帖子

2223

积分

⑥精研

积分
2223
发表于 2007-9-26 21:21:50 | 显示全部楼层
只要把文件读进内存么?
那...只要能保证程序一直在运行就...
  1. LPBYTE fileBuf = NULL;
  2. FILE* file = NULL;
  3. DWORD len;
  4. if ( ( file = fopen( path, "r") ) != NULL ) {
  5.     /* get file length */
  6.     fseek( file, 0, SEEK_END );
  7.     len = ftell( file );
  8.     fseek( file, 0, SEEK_SET );
  9.     /* allocate memory */
  10.     fileBuf = malloc( len * sizeof( BYTE ) );
  11.    
  12.     /* read file */
  13.     fread( fileBuf, sizeof( BYTE ), len, file);
  14.     /* ... do other stuff */
  15. }
复制代码
LZ要的莫非是这样的...么?
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2007-9-26 22:11:03 | 显示全部楼层
果然。。我要学习才可以。。。。 [s:5] 我能力太低下了。。。
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-4-29 16:24 , Processed in 0.024771 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表