char desktopPath[MAX_PATH];
HRESULT r = SHGetFolderPath(NULL, CSIDL_DESKTOP, NULL, 0, desktopPath);
if (r != S_OK) {
throw XArch(new XArchEvalWindows());
}
m_desktopPath = CString(desktopPath);
Это так странно. Этот фрагмент кода работает в VS2010 как в режимах выпуска, так и в режиме отладки. После того, как я его распространяю и запускаю приложение, я бы получил сообщение об ошибке "Система не может найти указанный файл". Чем страннее то, что мой коллега запускает одно и то же приложение на своей машине, и это работает.
В MSDN говорится, что SHGetFolderPath устарел, поэтому я попытался использовать SHGetKnownFolderPath. Это та же ситуация.
PWSTR desktopPathW = 0;
HRESULT hr = SHGetKnownFolderPath(FOLDERID_Desktop, 0, NULL, &desktopPathW);
if (!SUCCEEDED(hr)) {
throw XArch(new XArchEvalWindows());
}
CoTaskMemFree(static_cast<void*>(desktopPathW));
Любая идея о том, что происходит? Или как я могу отладить это?
Заранее спасибо. Джерри
В комментариях явно указано, что S_OK
является единственным результатом успеха, а коды ошибок включают S_FALSE
, E_FAIL
и E_INVALIDARG
. Вы ошибочно полагаете, что эти 3 являются единственными кодами ошибок.
main
с помощью этого вызова одной функции. Скорее всего, это что-то не показано здесь. Олицетворение возможно?