C++ 用Delphi创建Win7跳转列表
我正在尝试使用Delphi在Windows7上为我的应用程序创建跳转列表 我找到了这个C++代码,但是我不知道如何把它翻译成Delphi,有什么帮助吗?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
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();
}
返回人力资源;
}