复制粘贴的问题
简单说吧。。。windows里复制粘贴文件呢 。。。。。 如果这样的话。。。。就会报错说源文件找不到
步骤复制某文件
然后无聊的改了该文件所在文件夹的名字
在在别的地方点粘贴
就这样。。一定会报错。。源文件不存在。。谁都知道的事情
所以我想这样。。做个东西。。把要复制的文件存到内存中。。。然后调出来写到硬盘里。。释放内存
不知这样能做到吗?我的意思是即使改变了文件夹的名字也能粘贴出来
我不太懂哈。。大家表笑话我。。。 当然可以做到了。但实际应用中,更多是采用磁盘来缓存的方式。
就像winrar的那个功能,你可以不用解压就直接运行压缩包里的程序。事实上它是把文件解压到一个temp目录中,然后运行的。你复制的时候也一样,可以先把文件复制放在一个临时的地方,粘贴的时候,把那个临时文件再复制过来,退出的时候清除那个临时文件就行了。如果文件不大的话,放在内存中也是可以的。 其实。。我就是想知道放到内存里怎么做呢?文件大约是几K到几百K那么大
请帮帮忙吧。。。
鄙人能力有限,,根本不会做。。。
先谢谢大家哈。。。麻烦大家了 Windows自带的clipboard并不大,在NT系上最好是不要超过128KB,所以如果要把文件内容整个放进内存缓存的话,即使自定义一种格式并注册到clipboard上也不太好.标准clipboard一般只存放文字,图片,Office对象,文件名之类.下面假设不使用Windows自带的clipboard.
应对LZ说的情况,有好几种思路:
1. 写一个程序挂全局钩子,监听剪贴版消息,如果发现是对文件的剪贴板操作,则对其路径监视.
2. 写一个程序挂全局钩子,监听剪贴板消息,如果发现是对文件的写入剪贴板操作,并且文件大小小于一个阈值,
则实际打开文件,将文件内容和文件名保存在自定义的内存区域中;如果发现有读出剪贴板的操作,则将文件内容以原文件名写出,并在合适的时候清理先前申请的内存区域.
申请内存区域的方法,最简单的malloc或者new就OK.另外实现一个缓存也可以.
挂钩子的方法请另外查资料吧. 完全不懂。。。。我不想要那种监听复制剪切之类的。。。就是我输入文件路径就OK 只要把文件读进内存么?
那...只要能保证程序一直在运行就...
LPBYTE fileBuf = NULL;
FILE* file = NULL;
DWORD len;
if ( ( file = fopen( path, "r") ) != NULL ) {
/* get file length */
fseek( file, 0, SEEK_END );
len = ftell( file );
fseek( file, 0, SEEK_SET );
/* allocate memory */
fileBuf = malloc( len * sizeof( BYTE ) );
/* read file */
fread( fileBuf, sizeof( BYTE ), len, file);
/* ... do other stuff */
}
LZ要的莫非是这样的...么? 果然。。我要学习才可以。。。。 我能力太低下了。。。
页:
[1]