Получение информации о каталоге
От: Andy Беларусь  
Дата: 10.01.04 13:53
Оценка:
Привет всем.

В своём проекте я использую окно shell в котором отображается какая-нибудь папка, например C:\Program Files . Файлы в папке располагаются в виде списка с несколькими колонками дополнительной информации о файле, например, имя, размер и т.п. (обычно 4). Для получения информации о колонке я использую интерфейс IShellFolder2 и его метод GetDetailsOf. Но что-то не так. И QueryInterface не возвращает мне IShellFolder2 как показано в примере. hr — результат — при этом имеет значение 0x80004002 : no interface supported.
        ........
        //----------------------------------------------------
        CString sFolderPath = "c:\\Program Files";
        int nColumn = 0;

        IShellFolder *psfParentFolder=NULL, *psfSubFolder=NULL;
    LPITEMIDLIST pdlPath;

    HRESULT hr = SHGetDesktopFolder(&psfParentFolder);    

    if (FAILED(hr))
        return hr;

    WCHAR wszPathName[256];
    
    MultiByteToWideChar( CP_ACP, 0, sFolderPath, sFolderPath.GetLength()+1, wszPathName,   
        sizeof(wszPathName)/sizeof(wszPathName[0]) );
    
    hr = psfParentFolder->ParseDisplayName(NULL, NULL, wszPathName, NULL, &pdlPath, NULL);    

    if (FAILED(hr))
        return hr;
    

    hr = psfParentFolder->BindToObject(pdlPath, 0, IID_IShellFolder, (void**)&psfSubFolder);

    if (FAILED(hr))
        return hr;

    SHELLDETAILS ShellDetails;

    IShellFolder2 *pShellFolder2=NULL;

    hr = psfSubFolder->QueryInterface(IID_IShellFolder2,(LPVOID*)&pShellFolder2);
    if (SUCCEEDED(hr))
    {
        hr = pShellFolder2->GetDetailsOf(pdlPath,nColumn,&ShellDetails);
        pShellFolder2->Release();
    }
        //----------------------------------------------------
        ........


В чём может быть дело? Может кто-то знает более простой способ получить информацию о колонках в ShellList?

С уважением,
Андрей
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.