我要在自己的资源管理器中复制文件到剪帖板上,在系统的资源管理器中可以粘贴文件但是如果运行了复制函数后,系统的资源管理器就不能用了,而且所有打开文件的地方都会出问题。(即双击C盘,D盘,或点右键一类的操作都会出现错误,并且关闭)在复制函数中,如果把下面注释掉,就不会出现系统中的错误了
if(hFileGlobal!=NULL)
{
::GlobalFree(hFileGlobal);
hFileGlobal=NULL;
}
f = ::CloseClipboard();但是在系统资源管理器中,点右键的“粘贴”为灰。请帮帮忙吧,多谢了!
if(hFileGlobal!=NULL)
{
::GlobalFree(hFileGlobal);
hFileGlobal=NULL;
}
f = ::CloseClipboard();但是在系统资源管理器中,点右键的“粘贴”为灰。请帮帮忙吧,多谢了!
file_to_edit=GetFileSelected();
HGLOBAL hFileGlobal ;
BOOL f;
f = ::OpenClipboard(GetSafeHwnd());
EmptyClipboard();
if(f)
{
if(hFileGlobal != NULL)
{
::GlobalFree(hFileGlobal);
hFileGlobal = NULL;
}
hFileGlobal = ::GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, 1024 * MAX_PATH);
CHAR *pFileBuf = (CHAR *)::GlobalLock(hFileGlobal);
strcpy(pFileBuf, (LPCTSTR)file_to_edit);
::GlobalUnlock(hFileGlobal);
::SetClipboardData(CF_HDROP, hFileGlobal);
/* if(hFileGlobal!=NULL)
{
::GlobalFree(hFileGlobal);
hFileGlobal=NULL;
} f = ::CloseClipboard();
if(!f)
AfxMessageBox("剪帖板操作失败!");*/
}
::SetClipboardData(CF_TEXT,pFileBuf);
::SetClipboardData(CF_TEXT,hFileGlobal);
用CF_TEXT能行吗?
/*if(hFileGlobal!=NULL)
{
::GlobalFree(hFileGlobal);
hFileGlobal=NULL;
}
*/
f = ::CloseClipboard();
在我的程序中选择“复制”后,原系统中的资源管理器又都不能用了,除非重启才可以,出现错误:“发生内部错误,您正在使用的一个窗口即将被关闭”。
确定后,这个窗口就被关闭了(资源管理器或文件夹)我的“复制”和“粘贴”不在块儿中,分别是两个函数,所以在“复制”时不free,在“粘贴”后再free,是吗?请问该怎么办了?我想先完成在自己的程序中“复制”,然后可以在系统中“粘贴”。多谢了,请帮忙。
如果执行 ::CloseClipboard(); ,则在操作系统中的资源管理器就出问题,不能打开文件夹,也不能点右键。如果不执行 ::CloseClipboard(); ,也不能完成“复制”、“粘贴”,在自己的程序中“复制”后,操作系统中的右键中的“粘贴”项还是灰的。请问:这是为什么呢?怎样改正呢?多谢指教。