MCPcopy Create free account
hub / github.com/derceg/explorerplusplus / CopyFiles

Method CopyFiles

Explorer++/Helper/FileOperations.cpp:191–258  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

189}
190
191HRESULT NFileOperations::CopyFiles(
192 HWND hwnd, IShellItem *destinationFolder, std::vector<PCIDLIST_ABSOLUTE> &pidls, bool move)
193{
194 IFileOperation *fo;
195 HRESULT hr = CoCreateInstance(CLSID_FileOperation, nullptr, CLSCTX_ALL, IID_PPV_ARGS(&fo));
196
197 if (FAILED(hr))
198 {
199 return hr;
200 }
201
202 BOOST_SCOPE_EXIT(fo)
203 {
204 fo->Release();
205 }
206 BOOST_SCOPE_EXIT_END
207
208 hr = fo->SetOwnerWindow(hwnd);
209
210 if (FAILED(hr))
211 {
212 return hr;
213 }
214
215 hr = fo->SetOperationFlags(FOF_ALLOWUNDO);
216
217 if (FAILED(hr))
218 {
219 return hr;
220 }
221
222 IShellItemArray *shellItemArray;
223 hr = SHCreateShellItemArrayFromIDLists(
224 static_cast<UINT>(pidls.size()), &pidls[0], &shellItemArray);
225
226 if (FAILED(hr))
227 {
228 return hr;
229 }
230
231 BOOST_SCOPE_EXIT(shellItemArray)
232 {
233 shellItemArray->Release();
234 }
235 BOOST_SCOPE_EXIT_END
236
237 IUnknown *unknown;
238 hr = shellItemArray->QueryInterface(IID_IUnknown, reinterpret_cast<void **>(&unknown));
239
240 if (FAILED(hr))
241 {
242 return hr;
243 }
244
245 BOOST_SCOPE_EXIT(unknown)
246 {
247 unknown->Release();
248 }

Callers

nothing calls this directly

Calls 2

sizeMethod · 0.45
QueryInterfaceMethod · 0.45

Tested by

no test coverage detected