C++ 用Delphi创建Win7跳转列表

C++ 用Delphi创建Win7跳转列表,c++,delphi,windows-7,code-conversion,jump-list,C++,Delphi,Windows 7,Code Conversion,Jump List,我正在尝试使用Delphi在Windows7上为我的应用程序创建跳转列表 我找到了这个C++代码,但是我不知道如何把它翻译成Delphi,有什么帮助吗? void CreateJumpList() { ICustomDestinationList *pcdl; HRESULT hr = CoCreateInstance (CLSID_DestinationLis

我正在尝试使用Delphi在Windows7上为我的应用程序创建跳转列表

我找到了这个C++代码,但是我不知道如何把它翻译成Delphi,有什么帮助吗?
     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;    
}
void CreateJumpList()
{        
ICustomDestinationList*pcdl;
HRESULT hr=CoCreateInstance
(CLSID_目的地列表,
NULL,CLSCTX\U在PROC\U服务器中,
IID_PPV_参数(&pcdl));
如果(成功(hr))
{    
hr=pcdl->SetAppID(c_szAppID);
如果(成功(hr))
{    
UINT-uMaxSlots;
IObjectArray*poaRemoved;
hr=pcdl->BeginList
(&umaxlots,IID_PPV_ARGS(&poaRemoved));
如果(成功(hr))
{
hr=_AddCategoryToList(pcdl,poaRemoved);
如果(成功(hr))
{    
pcdl->CommitList();
}    
poaRemoved->Release();
}    
}    
}    
}
//这是帮助函数,实际上
//将项附加到集合对象HRESULT
_AddCategoryToList(ICustomDestinationList*pcdl,
IObjectArray*poaRemoved)
{
IObjectCollection*poc;
HRESULT hr=CoCreateInstance
(CLSID_EnumerableObjectCollection,
无效的
CLSCTX_INPROC_服务器,
IID_PPV_参数(&poc));
如果(成功(hr))
{    
对于(UINT i=0;iAddObject(磅/平方英寸);
}    
psi->Release();
}    
}
IObjectArray*poa;
hr=poc->QueryInterface(IID_PPV_ARGS(&poa));
如果(成功(hr))
{    
pcdl->AppendCategory(L“自定义类别”,poa);
poa->Release();
}    
poc->Release();
}    
返回人力资源;
}