views:

1062

answers:

2

I'm trying to create Jump list on windows 7 for my application using Delphi.

I found this c++ code, but I'm not sure how to translate it to Delphi, any help?

     void CreateJumpList()    
    {        
        ICustomDestinationList *pcdl;    
        HRESULT hr = CoCreateInstance    
                       (CLSID_DestinationList,     
                        NULL, CLSCTX_INPROC_SERVER,    
       IID_PPV_ARGS(&pcdl));          

         if (SUCCEEDED(hr))     
       {    
           hr = pcdl->SetAppID(c_szAppID);    
            if (SUCCEEDED(hr))    
            {    
                UINT uMaxSlots;    
                IObjectArray *poaRemoved;
                    hr = pcdl->BeginList    
                    (&uMaxSlots, IID_PPV_ARGS(&poaRemoved));    
                if (SUCCEEDED(hr))    
                {

                    hr = _AddCategoryToList(pcdl, poaRemoved);    
                    if (SUCCEEDED(hr))    
                    {    
                        pcdl->CommitList();    
                    }    
                    poaRemoved->Release();    
                }    
            }    
        }    
    }

// This is the helper function that actually 

//appends the items to a collection object HRESULT 


_AddCategoryToList(ICustomDestinationList *pcdl,    
                       IObjectArray *poaRemoved)    
{
    IObjectCollection *poc;    
    HRESULT hr = CoCreateInstance    
(CLSID_EnumerableObjectCollection,     
NULL,     
CLSCTX_INPROC_SERVER,     
IID_PPV_ARGS(&poc));    
    if (SUCCEEDED(hr))    
    {    
        for (UINT i = 0; i < ARRAYSIZE(c_rgpszFiles); i++)    
        {    
            IShellItem *psi;    
            if (SUCCEEDED(SHCreateItemInKnownFolder(    
FOLDERID_Documents,     
KF_FLAG_DEFAULT,     
c_rgpszFiles[i],     
IID_PPV_ARGS(&psi))))    
            {    
                if(!_IsItemInArray(psi, poaRemoved))    
                {    
                    poc->AddObject(psi);    
                }    
                psi->Release();
            }    
        }

        IObjectArray *poa;    
        hr = poc->QueryInterface(IID_PPV_ARGS(&poa));    
        if (SUCCEEDED(hr))    
        {    
            pcdl->AppendCategory(L"Custom category", poa);    
            poa->Release();    
        }    
        poc->Release();    
    }    
    return hr;    
}
+5  A: 

I remembered seeing this:

Alpha 1 of "Windows 7 Controls for Delphi" http://www.gumpi.com/Blog/2009/01/20/Alpha1OfWindows7ControlsForDelphi.aspx

Bob S
+3  A: 

This is now located at: http://www.gumpi.com/Blog/CategoryView,category,Windows%2B7.aspx

HannesNZ