Article ID: 194955
Article Last Modified on 8/25/2005
#define PR_AGING_PERIOD PROP_TAG(PT_LONG,0x36EC) #define PR_AGING_GRANULARITY PROP_TAG(PT_LONG,0x36EE) #define AG_MONTHS 0 #define AG_WEEKS 1 #define AG_DAYS 2
#include <edk.h>
#include <mapidefs.h>
#define PR_AGING_PERIOD PROP_TAG(PT_LONG,0x36EC)
#define PR_AGING_GRANULARITY PROP_TAG(PT_LONG,0x36EE)
#define AG_MONTHS 0
#define AG_WEEKS 1
#define AG_DAYS 2
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR pszCmd,
int nCmdShow)
{
LPMAPISESSION lpSession = NULL;
LPMDB lpStore = NULL;
HRESULT hr = NULL;
CHAR szFolder[MAX_PATH + 1] = {0};
LPMAPIFOLDER lpFolder = NULL;
ULONG cbEIDFolder = 0;
LPENTRYID lpEIDFolder = NULL;
LPMAPITABLE lpTable = NULL;
ULONG cbEntryID = 0;
LPENTRYID lpEntryID = NULL;
ULONG ulFlags = MAPI_BEST_ACCESS;
ULONG ulObjType = 0;
LPSRestriction lpRes = NULL;
ULONG lpulCount = NULL;
LPSRowSet lpRows = NULL;
LPMAPIPROP lpMAPIProp = NULL;
MessageBox ( 0L, "Begin changing aging properties.",
"Windows", MB_OK );
hr = MAPIInitialize(NULL);
if (FAILED(hr))
{
return 1;
}
hr = MAPILogonEx(0, "", NULL,
MAPI_LOGON_UI | MAPI_NEW_SESSION | MAPI_EXPLICIT_PROFILE ,
&lpSession);
if (FAILED(hr))
{
MessageBox(NULL,"MAPI Logon failed",NULL,MB_OK);
goto cleanup;
}
hr = HrOpenExchangePrivateStore(lpSession,&lpStore);
if (FAILED(hr))
{
MessageBox(NULL,"Message Store Not Opened",NULL,MB_OK);
goto cleanup;
}
strcpy(szFolder, "Top of Information Store\\Inbox");
hr = HrMAPIFindFolderEx(lpStore, '\\', szFolder,
&cbEIDFolder, &lpEIDFolder);
if (FAILED(hr))
{
MessageBox(NULL,"Inbox Not Found",NULL,MB_OK);
goto cleanup;
}
hr = HrMAPIOpenFolderEx (lpStore,'\\',szFolder,&lpFolder);
if (FAILED(hr))
{
MessageBox(NULL,"Inbox Could Not Be Opened",NULL,MB_OK);
goto cleanup;
}
hr = lpFolder->GetContentsTable(MAPI_ASSOCIATED,&lpTable);
if (FAILED(hr))
{
MessageBox(NULL,"GetContentsTable Failed",NULL,MB_OK);
goto cleanup;
}
{
SizedSPropTagArray(2, Columns) =
{
2, // number of properties
{
PR_ENTRYID, PR_MESSAGE_CLASS
}
};
hr = lpTable->SetColumns( (LPSPropTagArray)&Columns, NULL );
if (FAILED(hr))
{
MessageBox(NULL,"SetColumns Failed",NULL,MB_OK);
goto cleanup;
}
}
hr = HrStringToRestriction(
"PR_MESSAGE_CLASS = \"IPC.MS.Outlook.AgingProperties\"",
NULL, &lpRes);
if (FAILED(hr))
{
MessageBox(NULL,"HrStringToRestriction Failed",NULL,MB_OK);
goto cleanup;
}
if (FAILED(hr = lpTable->Restrict(lpRes,0L)))
{
MessageBox(NULL,"Restrict Failed",NULL,MB_OK);
goto cleanup;
}
if (FAILED(hr = lpTable->GetRowCount(0,&lpulCount)))
{
MessageBox(NULL,"GetRowCount Failed",NULL,MB_OK);
goto cleanup;
}
if (lpulCount > 0)
{
if (FAILED(hr = lpTable->QueryRows(lpulCount,
TBL_NOADVANCE, &lpRows)))
{
MessageBox(NULL,"QueryRows Failed",NULL,MB_OK);
goto cleanup;
}
cbEntryID = lpRows->aRow[0].lpProps[0].Value.bin.cb;
lpEntryID = (LPENTRYID) lpRows->aRow[0].lpProps[0].Value.bin.lpb;
if (FAILED(hr = lpFolder->OpenEntry(cbEntryID,
(LPENTRYID) lpEntryID, NULL,
MAPI_MODIFY, &ulObjType,
(LPUNKNOWN *) &lpMAPIProp)))
{
MessageBox(NULL,"OpenEntry Failed",NULL,MB_OK);
goto cleanup;
}
SPropValue spvProp = {0};
spvProp.ulPropTag = PR_AGING_PERIOD;
spvProp.Value.l = 14;
if (FAILED(hr = HrSetOneProp(lpMAPIProp,&spvProp)))
{
MessageBox(NULL,"HrSetOneProp Failed",NULL,MB_OK);
goto cleanup;
}
spvProp.ulPropTag = PR_AGING_GRANULARITY;
spvProp.Value.l = AG_DAYS;
if (FAILED(hr = HrSetOneProp(lpMAPIProp,&spvProp)))
{
MessageBox(NULL,"HrSetOneProp Failed",NULL,MB_OK);
goto cleanup;
}
if (FAILED(hr = lpMAPIProp->SaveChanges(KEEP_OPEN_READWRITE)))
{
MessageBox(NULL,"SaveChanges Failed",NULL,MB_OK);
goto cleanup;
}
}
cleanup:
if ( S_OK == hr )
MessageBox ( 0L, "Finished saving changes to aging properties.",
"Windows", MB_OK );
if (lpRows)
FREEPROWS(lpRows);
if (lpSession)
{
lpSession->Logoff(0, 0, 0);
ULRELEASE(lpSession);
}
MAPIUninitialize();
return 0;
}
Keywords: kbhowto kbmsg KB194955