Не работает корректно функция
HRESULT SHGetFolderPath(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwFlags, LPTSTR pszPath)
после переименования стандартных папок (dwFlags=SHGFP_TYPE_CURRENT при этом)
Например:
Меняем имя C:\Users\Yura\Videos на С:\Users\Yura\Videos2. (текущая ОС ->Win Vista но в XP тоже не работает)
Имеем
TCHAR szFolderPath[MAX_PATH];
if(SUCCEEDED(SHGetFolderPath(NULL, CSIDL_MYVIDEO, NULL, SHGFP_TYPE_DEFAULT, szFolderPath)))
{
//этот код не выполняеться
}
Функция не возвращает S_FALSE, E_FAIL, E_INVALIDARG, S_OK, szFolderPath остаеться без изменений.
Кто подскажет альтернативу. Но мне не подойдет простой перебор папок, так как надо изьять именно папку Videos (или My Video в XP) а название может быть любое (после того как ее переименовали!!!). Или может кто знает как можна розличить эту папку среди других (Documents, Pictures,…)?
Здравствуйте, Аноним, Вы писали:
А>Не работает корректно функция А>HRESULT SHGetFolderPath(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwFlags, LPTSTR pszPath) А>после переименования стандартных папок (dwFlags=SHGFP_TYPE_CURRENT при этом)
А>Например: А>Меняем имя C:\Users\Yura\Videos на С:\Users\Yura\Videos2. (текущая ОС ->Win Vista но в XP тоже не работает)
А>Имеем
А>TCHAR szFolderPath[MAX_PATH];
А>if(SUCCEEDED(SHGetFolderPath(NULL, CSIDL_MYVIDEO, NULL, SHGFP_TYPE_DEFAULT, szFolderPath))) А>{ А> //этот код не выполняеться А>}
А>Функция не возвращает S_FALSE, E_FAIL, E_INVALIDARG, S_OK, szFolderPath остаеться без изменений. А>Кто подскажет альтернативу. Но мне не подойдет простой перебор папок, так как надо изьять именно папку Videos (или My Video в XP) а название может быть любое (после того как ее переименовали!!!). Или может кто знает как можна розличить эту папку среди других (Documents, Pictures,…)?
Как вы переименовывали папку? На сколько я помню, имя папки берется каким-то образом через реестр.
Опишите поподробнее то, что хотите сделать.
Re[2]: Shell Folders
От:
Аноним
Дата:
15.08.07 13:49
Оценка:
S>Опишите поподробнее то, что хотите сделать.
Здраствуйте.
Мне надо сделать диалог который будет позволять пользователю выбрать ту или иную папку (надо сделать чете похожее на дерево каталогов в проводнике). Где хранятся названия (My Documents, My Computer и т.д.) в реестре XP я знаю, но Vista отличается немного (Надо чтоб данный диалог работал корректно и в Win. Vista).
Например, сейчас у меня папка Documents расположена в С:\Users\Yura\, где Yura имя текущего пользователя. То есть сначала мне надо узнать имя текущего пользователя (где оно храниться в реестре я толком не знаю), а потом уже название самой папки Documents (и Videos, Pictures как я говорил раньше и т.д). Хотя первым делом надо нарыть Имя пользов.
Почему спросил за SHGetFolderPath потому что этим способом тоже как я знаю можно вытянуть имя одной из стандартных папок (точнее путь к ней).
Если подскажешь как можно промутить через реестр буду очень благодарен (точнее под какими ключами в реестре Висты можно нарыть инфу о Имени текущего пользователя и т.д.). Насчет переименов. Переименовывал с Far. Потом запускал вышеописанный диалог.