//Example for contact items
::IPOutlookApp2* pApp = NULL;
/// Here goes code for initialization of pApp, hope U know how to do it
:)
///
::IFolder* pFolder = NULL;
hr = pApp->GetDefaultFolder(olFolderContacts, &pFolder);
::IContact* pContact = NULL;
::IItem* pItem = NULL;
::IPOutlookItemCollection* items = NULL;
hr = pFolder->get_Items(&items);
//just for example, recieving the first item from Contacts folder
if (SUCCEEDED(items->Item(1,
reinterpret_cast<IDispatch**>(&pContact))))
{
CEOID oid = 0;
pContact->get_Oid((long*)&oid);
pApp->GetItemFromOidEx(oid, 0, &pItem);
your code goes here
hr = pItem->GetProps(...);
your code goes here
if ( pItem )
{
pItem->Release();
pItem = NULL;
}
}
Also, here is the working call of ::IItem::GetProps() I use in my
project:
int cProps = 2;
CEPROPID rgPropId[] = { PIMPR_FILEAS, PIMPR_LAST_NAME };
CEPROPVAL *prgPropval = NULL;
ULONG cbBuffer = 0;
HANDLE hHeap = GetProcessHeap();
// ::IItem item - given pointer to ::IItem compatible object
hr = item->GetProps(rgPropId, CEDB_ALLOWREALLOC, cProps, &prgPropval,
&cbBuffer, hHeap);
if ( FAILED(hr) || prgPropval == NULL || cbBuffer == 0 )
{
// some deinitialization needs to be here
return NULL;
}
/// working with recieved properties' values
HeapFree(hHeap, 0, prgPropval);