SHFileOperation создает пустой каталог вместо файла - PullRequest
2 голосов
/ 16 августа 2010

Я пытаюсь скопировать файл из одного места в другое, используя SHFileOperation:

SHFILEOPSTRUCT fileop;
fileop.hwnd = 0;
fileop.wFunc = FO_COPY;
fileop.pFrom = L"C:\\SomeDirectory\\SomeName.jpg\0";
fileop.pTo = L"C:\\SomeOtherDirectory\\SomeName.jpg\0";
fileop.fFlags = FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_SILENT;
fileop.fAnyOperationsAborted = FALSE;
fileop.hNameMappings = 0;
fileop.lpszProgressTitle = 0;
SHFileOperation(&fileop);

Проблема в том, что вместо получения копии SomeName.jpg в SomeOtherDirectory создается пустой каталог с именем SomeOtherDirectory \ SomeName.jpg, какие-либо подсказки?

1 Ответ

1 голос
/ 16 августа 2010

Для операций FO_COPY и FO_MOVE член pTo в SHFILEOPSTRUCT должен быть местоположением, то есть каталогом, а не именем файла назначения. Каталог может не существовать, и в этом случае он создается, даже если он выглядит как имя файла.

Вы должны либо просто указать "C:\\SomeOtherDiretory\0", либо использовать FO_RENAME.

Что касается того, почему ваш файл не создан, вы проверили возвращаемое значение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...