Люди кто-нибудь редактировал записи в адресной книге outlook через функцию MAPIAddress. Везде в сети написано что эта функция создает и модифицирует записи в адресной книге, я че-то никак не воткну как это сделать. Вообще надо добавить записи в книгу. Может кто-то этим занимался и знаеи как сделать?
Зараннее благодарен.
Здравствуйте, sovmaster, Вы писали:
S>Люди кто-нибудь редактировал записи в адресной книге outlook через функцию MAPIAddress. Везде в сети написано что эта функция создает и модифицирует записи в адресной книге, я че-то никак не воткну как это сделать. Вообще надо добавить записи в книгу. Может кто-то этим занимался и знаеи как сделать? S>Зараннее благодарен.
Эта функция показывает диалог, где можно не только выбрать реципиента, но и создать новую запись в адресной книге.. Т.е. диалог такой же, как и из аутлука Tools/Address book...
Если надо создавать программно и без вмешательства юзера, то эта функция не подойдёт. Используй MAPIX (экстендед МАПИ) если это Outlook, или WABOpen если это Outlook Express и используется Windows Address Book.
для Outllok сценарий
1. инит MAPIInitialize
2. создаём сессию MAPILogonEx
3. берём у сессии адресную книгу IMAPISession::OpenAddressBook
4. у адресной книги берём контейнер, где будет создаваться запись — для простоты PAB (personal Adress Book)
IAddrBook::GetPAB
5. Создаём новую запись в контейнере IAddrBook::NewEntry
6. Открываем эту запись IAddrBook::OpenEntry получаем интерфейс IMailUser
7. Устанавливаем необходимые проперти IMailUser : IMAPIProp::SetProps такие как
PR_ADDRTYPE
PR_DISPLAY_NAME
PR_EMAIL_ADDRESS
8. всё релизим, и отлогиниваемся..
Для Outlook Express всё аналогично, но сразу берём книгу WABOpen (шаг 3)
На 5 шаге возникла проблема. При вызове NewEntry появляется диалог где предлагается выбрать "Тип адреса" контакт иди Список рассылки. Я так понимаю это шаблоны для заполнения адресной книги.
Не понятно где взять указательна на шаблон уже существующий например контакт.
Здравствуйте, sovmaster, Вы писали:
S>На 5 шаге возникла проблема. При вызове NewEntry появляется диалог где предлагается выбрать "Тип адреса" контакт иди Список рассылки. Я так понимаю это шаблоны для заполнения адресной книги. S>Не понятно где взять указательна на шаблон уже существующий например контакт.
из МСДН
To use a particular template for adding a new entry to a modifiable container
Call IMAPISession::OpenEntry to open the destination container, setting the lpEntryID parameter to the entry identifier of the container.
Call the destination container's IMAPIProp::OpenProperty method and set ulPropTag to PR_CREATE_TEMPLATES and lpiid to IID_IMAPITable. The container will return a one-off table listing all of the templates that it supports for creating new entries.
Retrieve the row that represents the template for the particular type of entry you want to create. The PR_ADDRTYPE column indicates the address type that is supported by the template.
Call IAddrBook::NewEntry and set lpEIDNewEntryTpl to the entry identifier of the selected template. This will be the PR_ENTRYID column from the template's row in the one-off table. Pass zero in cbEIDContainer and NULL in lpEIDContainer. Pass a valid pointer in the lppEIDNewEntry parameter if you want to retain the new entry's entry identifier.
Сегодня уже поздно.. если не получится-посмотрю завтра.
Ура I did it. Вот кусочек:
hr = pAddressBook->GetPAB(& cbEID, &lpEID);
if(FAILED(hr)){
::MessageBox(hparent, _T("MAPIGetPab() failure."), _T("mapi"), MB_OK |MB_ICONERROR);
return FALSE; }