怎么把多个文件或目录复制到剪切板里?
比如我把多个文件或目录的路径存放到TStringLis里,然后把它们复制到剪切板里,这样当在WIn里点粘贴时,就全部粘贴过来了,
[解决办法]
你的意思是用程序模拟这个效果么还是什么?
[解决办法]
你把选中的文件路径名字 保存在TStringLis
然后循环TStringLis 获取路径名;
最后用SHFileOperation复制文件夹 或者用CopyFile赋值文件
[解决办法]
选中,这样copytocliboard不行?
[解决办法]
关闭了你的程序,仍能保存?
你的程序都关了 你TStringLis早没了
那你这里 “路径存放到TStringLis里,” 不是瞎扯
[解决办法]
//---------------------------------------//#define NO_WIN32_LEAN_AND_MEAN//#include <shlobj.h>bool CopyFilesToClip(TStringList *fileList){ //复制文件到剪切板,对于多个文件,没有参数指定文件个数, //每个文件名用 0 分隔,所有文件名结束用 两个0表示 DROPFILES *dropFiles; UINT memLen; HGLOBAL Gmem; char *pMem,*szFileList; //记算所需内存大小。 memLen=sizeof(DROPFILES); for(int i=0;i<fileList->Count;i++) memLen+=fileList->Strings[i].Length()+1; memLen++; //最后一个0的位置。 Gmem= GlobalAlloc(GMEM_ZEROINIT|GMEM_MOVEABLE|GMEM_DDESHARE, memLen); pMem=(char*)GlobalLock(Gmem); if(pMem==NULL) { GlobalFree(Gmem); return false; } dropFiles=(DROPFILES*)pMem; szFileList=pMem+sizeof(DROPFILES); dropFiles->pFiles =sizeof(DROPFILES); dropFiles->pt.x=0; dropFiles->pt.y=0; dropFiles->fNC =false; dropFiles->fWide =false; int nameLen=0; for(int i=0;i<fileList->Count;i++) { nameLen+=wsprintf(szFileList+nameLen,fileList->Strings[i].c_str()); nameLen++;//字符结尾0的位置。 } szFileList[nameLen]=0;//最后一个0。 GlobalUnlock(Gmem); if(!OpenClipboard(NULL) ) { GlobalFree(Gmem); return false; } bool retValue=true; EmptyClipboard(); if(NULL==SetClipboardData( CF_HDROP, Gmem )) retValue=false; CloseClipboard(); return retValue;}//---------------------------------------