Zit er bij de Exchange SDK geen documentatie? Je moet de COM / VB docs doornemen, de methods komen gewoon overeen.
In de MSDN (platform SDK) staat ook veel documentatie over CDO-EX.
Dit is uit de MSDN gecopied, C++ example, dat contacts toevoegt
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
| //Adding a New Contact with CDOEx
#import <cdoex.dll> rename_namespace("CDO") raw_interfaces_only
#include <stdio.h>
#include <tchar.h>
enum ConnectModeEnum
{
adModeUnknown = 0,
adModeRead = 1,
adModeWrite = 2,
adModeReadWrite = 3,
adModeShareDenyRead = 4,
adModeShareDenyWrite = 8,
adModeShareExclusive = 12,
adModeShareDenyNone = 16,
adModeRecursive = 4194304
};
enum RecordCreateOptionsEnum
{
adCreateCollection = 8192,
adCreateStructDoc = -2147483648,
adCreateNonCollection = 0,
adOpenIfExists = 33554432,
adCreateOverwrite = 67108864,
adFailIfNotExists = -1
};
enum RecordOpenOptionsEnum
{
adOpenRecordUnspecified = -1,
adOpenSource = 8388608,
adOpenAsync = 4096,
adDelayFetchStream = 16384,
adDelayFetchFields = 32768
};
void dump_com_error(_com_error &e)
{
_tprintf(_T("Oops - hit an error!\n"));
_tprintf(_T("\a\tCode = %08lx\n"), e.Error());
_tprintf(_T("\a\tCode meaning = %s\n"), e.ErrorMessage());
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
_tprintf(_T("\a\tSource = %s\n"), (LPCTSTR) bstrSource);
_tprintf(_T("\a\tDescription = %s\n"), (LPCTSTR) bstrDescription);
}
struct StartOle {
StartOle() { CoInitialize(NULL); }
~StartOle() { CoUninitialize(); }
} _inst_StartOle;
void main(int argc, char** argv)
{
HRESULT hr = S_OK;
if(argc != 2)
{
printf("Usage: CreateContact\r\n");
printf(
"Example: CreateContact \"file://./backofficestorage/mydomain.contoso.com/MBX/User1/Contacts\"\n");
exit(0);
}
wchar_t* folderURL = NULL;
size_t size;
size = mbstowcs(NULL,argv[1],0);
folderURL = (wchar_t*)malloc(size * sizeof(wchar_t*) + 1);
mbstowcs(folderURL,argv[1],size+1);
BSTR bstrFolderURL = SysAllocString(folderURL);
try
{
CDO::IPersonPtr pPerson(_uuidof(CDO::Person));
CDO::IDataSourcePtr pDsrc;
pPerson->put_FirstName(L"John");
pPerson->put_LastName(L"Smith");
pPerson->put_HomeCity(L"Los Angeles");
pPerson->put_HomeState(L"California");
pPerson->put_Email(L"JohnSmith@contoso.com");
pPerson->get_DataSource(&pDsrc);
hr = pDsrc->SaveToContainer(bstrFolderURL,
0,
(enum CDO::ConnectModeEnum) adModeReadWrite,
(enum CDO::RecordCreateOptionsEnum)adCreateOverwrite,
(enum CDO::RecordOpenOptionsEnum)adOpenSource,
L"",
L"");
if (SUCCEEDED(hr))
_tprintf(_T("Contact created\n"));
}
catch(_com_error &e)
{
dump_com_error(e);
}
SysFreeString(bstrFolderURL);
} |
De smart pointers die er worden aangemaakt komen overeen met object references. ZOals je ziet maakt hij een Person object aan en schrijft deze weg naar een folder. Dat is het idee. Je hebt ook nog CDOEXM, CDO voor Exchange Management. Tik in de MSDN in: CDOEX en je heb een lijst met docs
[
Voor 20% gewijzigd door
EfBe op 08-04-2004 11:44
]