Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > SHGetFileInfo и длинные имена файлов


Автор: Nastya 12.3.2008, 09:55
Здравствуйте.
Я использую SHGetFileInfo для получения иконки файла\папки. Если длин полного пути привышиает 256 возвращает ошибку и GetLastError = 3(The system cannot find the path specified. ). Если формирую короткое имя и передаею, функция все-равно возвращает ошибку, но GetLastError = 0.

Может кто зант как это побороть? 

Автор: korian 12.3.2008, 15:30
код в студию

p.s. длина пути не может превышать MAX_PATH

Автор: NiJazz 13.3.2008, 10:43
Nastya, может, что-то типа ExtractIcon попробовать?

Автор: Nastya 13.3.2008, 12:50
korian, речь как раз о том когда дина имени ПРЕВЫШАЕТ MAX_PATH

Автор: Rififi 13.3.2008, 17:00
Nastya, 
попробуй через IShellFolder::ParseDisplayName 

Автор: Andrey44 17.3.2008, 09:02
Nastya, если вы хотите доставать нормальные иконки используйте IImageList.
Сейчас под рукой нет того кода что я писал.
Если надо завтра могу принести.

Автор: 586 20.3.2008, 20:41
http://msdn2.microsoft.com/en-us/library/aa363858(VS.85).aspx
Цитата
lpFileName 
The name of the object to be created or opened.

In the ANSI version of this function, the name is limited to MAX_PATH characters. To extend this limit to 32,767 wide characters, call the Unicode version of the function and prepend "\\?\" to the path. 

Попробуй задать путь в таком формате:
Код
L"\\\\?\\C:\\test.txt"

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)