之前遇到怎么把剪贴板上的文件路径读出来的问题。即:在进行剪贴或者复制的时候,剪贴板上存储的是要剪贴或者复制的文件路径,如何从剪贴板上读到这个些路径信息,让我经历了一番周折,现在解决了,与大家一起分享一下。
- UINT uDropEffect = RegisterClipboardFormat(_T("Preferred DropEffect"));
- UINT cFiles = 0;
- DWORD dwEffect, *dw;
- if ( OpenClipboard() )
- {
- HDROP hDrop = HDROP(GetClipboardData(CF_HDROP));
- if (hDrop)
- {
- dw = (DWORD*)(GetClipboardData(uDropEffect));
- if (NULL == dw )
- {
- dwEffect = DROPEFFECT_COPY;
- }
- else
- {
- dwEffect = *dw;
- }
- cFiles = DragQueryFile(hDrop,(UINT)-1,NULL,0);
- TCHAR szFile[MAX_PATH];
- for (UINT count = 0; count < cFiles; count++)
- {
- DragQueryFile(hDrop,count,szFile,sizeof(szFile));
- strcat(szBuffer,szFile);
- //lstrcat(szBuffer,_T("\r\n"));
- }
- CloseClipboard();
- if (dwEffect & DROPEFFECT_MOVE)
- {
- BOOL b = MoveFileEx(szBuffer,_T("D:\\"),TRUE);
- ::MessageBox(NULL,szBuffer,_T("Move Files"),MB_OK);
- }
- else if (dwEffect & DROPEFFECT_COPY)
- {
- BOOL bx = CopyFileEx(strFile,_T("D:\\").GetBuffer(),NULL,NULL,FALSE,COPY_FILE_FAIL_IF_EXISTS );
- DWORD dwError = GetLastError();
- ::MessageBox(NULL,szBuffer,_T("Copy Files"),MB_OK);
- }
- }
- }
上面的代码给出了如何获得剪贴板上的文件路径。如果是单个文件的话,实现了移动和复制的功能。如果是剪贴或者复制多个文件,需要处理一下就可以实现。
参考资料:http://www.cctry.com/thread-67916-1-1.html
转载于:https://blog.51cto.com/3457302/901669