Shell Folders
От: Аноним  
Дата: 15.08.07 10:58
Оценка:
Не работает корректно функция
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: Shell Folders
От: Stuw  
Дата: 15.08.07 12:53
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Не работает корректно функция

А>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. Потом запускал вышеописанный диалог.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.