系统自带的文件拷贝、移动、删除和重命名操作(三)
ase();
}
CoUninitialize();
}
return hr;
}
删除操作
[cpp]
int CLaterFileOperator::FODelFile(const wstring &strFrom)
{
HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
if (SUCCEEDED(hr))
{
IFileOperation *pfo;
///< Create the IFileOperation interface
hr = CoCreateInstance(CLSID_FileOperation,
NULL,
CLSCTX_ALL,
IID_PPV_ARGS(&pfo));
if (SUCCEEDED(hr))
{
///< Set the operation flags
hr = pfo->SetOperationFlags(FOF_ALLOWUNDO);
if (SUCCEEDED(hr))
{
///< Create an IShellItem from the supplied source path
IShellItem *psiFrom = NULL;
hr = SHCreateItemFromParsingName(strFrom.c_str(),
NULL,
IID_PPV_ARGS(&psiFrom));
if (SUCCEEDED(hr))
{
hr = pfo->DeleteItem(psiFrom, NULL);
psiFrom->Release();
}
if (SUCCEEDED(hr))
{
hr = pfo->PerformOperations();
}
}
pfo->Release();
}
CoUninitialize();
}
return hr;
}
重命名操作
[cpp]
int CLaterFileOperator::FORenameFile(const wstring &strFrom, const wstring &strRename)
{
HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
if (SUCCEEDED(hr))
{
IFileOperation *pfo;
///< Create the IFileOperation interface
hr = CoCreateInstance(CLSID_FileOperation,
NULL,
CLSCTX_ALL,
IID_PPV_ARGS(&pfo));
if (SUCCEEDED(hr))
{
///< Set the operation flags
hr = pfo->SetOperationFlags(FOF_ALLOWUNDO | FOF_NOCONFIRMATION);
if (SUCCEEDED(hr))
{
///< Create an IShellItem from the supplied source path
IShellItem *psiFrom = NULL;
hr = SHCreateItemFromParsingName(strFrom.c_str(),
NULL,
IID_PPV_ARGS(&psiFrom));
if (SUCCEEDED(hr))
{
hr = pfo->RenameItem(psiFrom, strRename.c_str(), NULL);
psiFrom->Release();
}
if (SUCCEEDED(hr))
{
hr = pfo->PerformOperations();
}
}
pfo->Release();
}
CoUninitialize();
}
return hr;
}