CREATEPR.C
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:7k
源码类别:
Windows编程
开发平台:
Visual C++
- /*
- * CREATEPR.C
- *
- * Very simple console app creating a profile with hardcoded values.
- *
- * Copyright (c) 1995, Microsoft Corporation. All Rights Reserved.
- *
- */
- #include <mapiutil.h>
- #include <mapiwin.h>
- #include <mapidbg.h>
- #include <stdio.h>
- #include <smpms.h>
- #include <smpxp.h>
- #include <smpab.h>
- #ifdef DEBUG
- #define TraceFnResult(f, hr)
- { (hr) ?
- printf(#f " returns 0x%08lX %sn", GetScode(hr), SzDecodeScode(GetScode(hr))) : 0;
- }
- #else
- #define TraceFnResult(f, hr)
- #endif /*/DEBUG*/
- HRESULT HrCreateProfile(void);
- int main (void)
- {
- HRESULT hr = 0;
- hr = HrCreateProfile();
- return (int) hr;
- }
- HRESULT HrCreateProfile(void)
- {
- LPPROFADMIN ppa = NULL;
- LPSERVICEADMIN psa = NULL;
- LPMAPISESSION pses = NULL;
- LPMAPITABLE ptblSvc = NULL;
- HRESULT hr;
- LPSRowSet prows = NULL;
- LPSRow prow = NULL;
- enum {iSvcName, iSvcUID, cptaSvc};
- SizedSPropTagArray (cptaSvc, ptaSvc) = { cptaSvc,
- { PR_SERVICE_NAME,
- PR_SERVICE_UID } };
- LPSTR szProfile = "User XXX";
- #define cProviders 3
- #define nMAXProps 6
- SPropValue rgval[nMAXProps];
- hr = MAPIInitialize(NULL);
- if (HR_FAILED(hr))
- {
- TraceFnResult(MAPIInitialize, hr);
- return hr;
- }
- hr = MAPIAdminProfiles(0, &ppa);
- if (HR_FAILED(hr))
- {
- TraceFnResult(MAPIAdminProfiles, hr);
- goto ret;
- }
- (void) ppa->lpVtbl->DeleteProfile(ppa, szProfile, 0);
- printf("Creating profile "%s"n", szProfile);
- hr = ppa->lpVtbl->CreateProfile(ppa, szProfile, NULL, 0, 0);
- if (HR_FAILED(hr))
- {
- TraceFnResult(CreateProfile, hr);
- goto ret;
- }
- hr = MAPILogonEx(0, szProfile, NULL, MAPI_NO_MAIL | MAPI_NEW_SESSION,
- &pses);
- if (HR_FAILED(hr))
- {
- TraceFnResult(MAPILogonEx, hr);
- goto ret;
- }
- hr = pses->lpVtbl->AdminServices(pses, 0, &psa);
- if (HR_FAILED(hr))
- goto ret;
- printf("Creating Sample Message Storen");
- hr = psa->lpVtbl->CreateMsgService(psa, "SMPMS", "MAPI Sample Msg Store", 0, 0);
- if (HR_FAILED(hr))
- {
- TraceFnResult(CreateMsgService, hr);
- goto ret;
- }
- printf("Creating Sample Transportn");
- hr = psa->lpVtbl->CreateMsgService(psa, "SMPXP",
- "Sample Peer To Peer Transport", 0, 0);
- if (HR_FAILED(hr))
- {
- TraceFnResult(CreateMsgService, hr);
- goto ret;
- }
- printf("Creating Sample Address Bookn");
- hr = psa->lpVtbl->CreateMsgService(psa, "SMPAB",
- "Sample Addres Book", 0, 0);
- if (HR_FAILED(hr))
- {
- TraceFnResult(CreateMsgService, hr);
- goto ret;
- }
- hr = psa->lpVtbl->GetMsgServiceTable(psa, 0, &ptblSvc);
- if (HR_FAILED(hr))
- {
- TraceFnResult(GetMsgServiceTable, hr);
- goto ret;
- }
- hr = HrQueryAllRows(ptblSvc, (LPSPropTagArray)&ptaSvc, NULL, NULL, 0, &prows);
- if (HR_FAILED(hr))
- {
- TraceFnResult(HrQueryAllRows, hr);
- goto ret;
- }
- Assert(prows->cRows == cProviders);
- for(prow = prows->aRow; prow < prows->aRow + cProviders; ++prow)
- {
- Assert(prow->cValues == cptaSvc);
- Assert(prow->lpProps[iSvcName].ulPropTag == PR_SERVICE_NAME);
- Assert(prow->lpProps[iSvcUID].ulPropTag == PR_SERVICE_UID);
- Assert(prow->lpProps[iSvcUID].Value.bin.cb == sizeof(MAPIUID));
- if(!lstrcmp(prow->lpProps[iSvcName].Value.lpszA, "SMPMS"))
- {
- printf("Configuring Sample Message Store...");
- rgval[0].ulPropTag = PR_SMS_PATH;
- rgval[0].Value.lpszA = "d:\sms";
- rgval[1].ulPropTag = PR_SMS_PASSWORD;
- rgval[1].Value.lpszA = "PASSWORD";
- rgval[2].ulPropTag = PR_SMS_REMEMBER_PW;
- rgval[2].Value.b = TRUE;
- rgval[3].ulPropTag = PR_SMS_CREATE;
- rgval[3].Value.b = TRUE;
- hr = psa->lpVtbl->ConfigureMsgService(psa,
- (LPMAPIUID) prow->lpProps[iSvcUID].Value.bin.lpb,
- 0, 0, 4, rgval);
- if (HR_FAILED(hr))
- {
- printf("failedn");
- TraceFnResult(ConfigureMsgService, hr);
- //goto ret;
- }
- else
- {
- printf("OKn");
- }
- }
- else if(!lstrcmp(prow->lpProps[iSvcName].Value.lpszA, "SMPXP"))
- {
- printf("Configuring Sample Transport...");
- rgval[0].ulPropTag = PR_SAMPLE_DISPLAY_NAME;
- rgval[0].Value.LPSZ = "USER XXX";
- rgval[1].ulPropTag = PR_SAMPLE_EMAIL_ADDR_TYPE;
- rgval[1].Value.LPSZ = "MSPEER";
- rgval[2].ulPropTag = PR_SAMPLE_EMAIL_ADDRESS;
- rgval[2].Value.LPSZ = "\\aleksank\d\test\inbound";
- rgval[3].ulPropTag = PR_SAMPLE_INBOUND_DIR;
- rgval[3].Value.LPSZ = "d:\test\inbound";
- rgval[4].ulPropTag = PR_SAMPLE_OUTBOUND_DIR;
- rgval[4].Value.LPSZ = "d:\test\outbound";
- rgval[5].ulPropTag = PR_SAMPLE_FLAGS;
- rgval[5].Value.l = 9;
- hr = psa->lpVtbl->ConfigureMsgService(psa,
- (LPMAPIUID) prow->lpProps[iSvcUID].Value.bin.lpb,
- 0, 0, 6, rgval);
- if (HR_FAILED(hr))
- {
- printf("failedn");
- TraceFnResult(ConfigureMsgService, hr);
- //goto ret;
- }
- else
- {
- printf("OKn");
- }
- }
- else if(!lstrcmp(prow->lpProps[iSvcName].Value.lpszA, "SMPAB"))
- {
- printf("Configuring Sample Address Book...");
- rgval[0].ulPropTag = PR_SAB_FILE;
- rgval[0].Value.LPSZ = "d:\sampab.sab";
- hr = psa->lpVtbl->ConfigureMsgService(psa,
- (LPMAPIUID) prow->lpProps[iSvcUID].Value.bin.lpb,
- 0, 0, 1, rgval);
- if (HR_FAILED(hr))
- {
- printf("failedn");
- TraceFnResult(ConfigureMsgService, hr);
- //goto ret;
- }
- else
- {
- printf("OKn");
- }
- }
- else
- {
- Assert(FALSE);
- }
- }
- ret:
- UlRelease(ptblSvc);
- UlRelease(psa);
- UlRelease(pses);
- UlRelease(ppa);
- FreeProws(prows);
- MAPIUninitialize();
- return hr;
- }