シェルアイテム(ファイルやフォルダ)のインフォチップの取得

(2003.02.11)
    static CString GetInfoTip(HWND hWnd, IShellFolderPtr spShellFolder, LPCITEMIDLIST pidl)
    {
        USES_CONVERSION;
 
        if (spShellFolder == NULL || pidl == NULL)
        {
            return CString();
        }
 
        HRESULT hr = S_OK;
 
        IQueryInfoPtr spQueryInfo;
        hr = spShellFolder->GetUIObjectOf(hWnd, 1, &pidl, IID_IQueryInfo, NULL, (void**)&spQueryInfo);
        if (FAILED(hr))
        {
            return CString();
        }
 
        LPWSTR wszText = 0;
        hr = spQueryInfo->GetInfoTip(0, &wszText);
        if (FAILED(hr))
        {
            return CString();
        }
 
        CString strResult = W2T(wszText);
        
        Emulate_SHFree(wszText);
 
        return strResult;
    }
 
    // Shlwapihelper.hよりコピー
    // shell32.dll version 5.0 or later 互換
    static void Emulate_SHFree(void* pv)
    {
        HRESULT hr = S_OK;
 
        IMallocPtr spMalloc;
        hr = ::SHGetMalloc(&spMalloc);
        if (FAILED(hr))
        {
            return;
        }
 
        spMalloc->Free(pv);
    }
一覧に戻る
© 2003 WAC.com All Right Reserved.