Сообщений 4    Оценка 1 [+0/-1]         Оценить  
Система Orphus

Как получить ITEMIDLIST для заданного файла или каталога?

Автор: Игорь Вартанов

Версия текста: 1.0

Метод IShellFolder::ParseDisplayName( ) позволяет получить указатель на ITEMIDLIST для любого действительного пути path файловой системы.

// path   - строка ANSI-символов, содержащая путь к заданному файлу/каталогу
// hWnd   - хэндл окна, которому будут направляться сообщения об ошибках;
//          если нет необходимости в их получении, используйте NULL

#include <windows.h>
#include <shlobj.h>

#pragma comment(lib, "shell32")

HRESULT       hRes;
WCHAR         wpath[MAX_PATH];
IMalloc*      pMalloc = NULL;
ITEMIDLIST*   pidl    = NULL;
IShellFolder* pshf    = NULL;


hRes = SHGetDesktopFolder(&pshf);
mbstowcs(wpath, path, MAX_PATH); // ANSI to UNICODE
hRes = pshf->ParseDisplayName(hWnd, 0, wpath, NULL, &pidl, NULL);
. . .
// Используем указатель pidl 
. . .
// Освобождаем список и интерфейсы
hRes = SHGetMalloc(&pMalloc);
pMalloc->Free(pidl);
pMalloc->Release();
pshf->Release();

Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.
    Сообщений 4    Оценка 1 [+0/-1]         Оценить