首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

如何把多个文件或目录复制到剪切板里

2012-06-14 
怎么把多个文件或目录复制到剪切板里?比如我把多个文件或目录的路径存放到TStringLis里,然后把它们复制到

怎么把多个文件或目录复制到剪切板里?
比如我把多个文件或目录的路径存放到TStringLis里,然后把它们复制到剪切板里,这样当在WIn里点粘贴时,就全部粘贴过来了,

[解决办法]
你的意思是用程序模拟这个效果么还是什么?
[解决办法]
你把选中的文件路径名字 保存在TStringLis
然后循环TStringLis 获取路径名;
最后用SHFileOperation复制文件夹 或者用CopyFile赋值文件
[解决办法]
选中,这样copytocliboard不行?
[解决办法]

关闭了你的程序,仍能保存?
你的程序都关了 你TStringLis早没了
那你这里 “路径存放到TStringLis里,” 不是瞎扯

[解决办法]

C/C++ code
//---------------------------------------//#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;}//--------------------------------------- 

热点排行