Я делаю надстройку для Outlook 2007 на C++.Надстройка Outlook. Как управлять элементами События
Мне нужно зафиксировать события, такие как создание, изменение или удаление из элементов Outlook (контакт, назначение, задачи и заметки), но единственная информация/примеры, которые я нашел, для Visual Basic, поэтому я не знаю, как для подключения обработчика событий.
Вот некоторая информация, касающаяся: http://msdn.microsoft.com/en-us/library/bb208390(v=office.12).aspx
Любая помощь приветствуется :) Спасибо
Update
Извините за то, так долго, чтобы обновить, я был вне города. У меня есть некоторые сомнения/проблемы, которые вы можете знать, как помочь.
В моем случае я беру этот проект, который был запущен, поэтому я немного смущен обо всем этом. У меня есть класс OutlookAddin, который происходит из IDTExtensibility2. У меня также есть этот другой класс, называемый AutoSync, если бы я хотел бы использовать все методы, когда срабатывает событие. Объект этого класса инициализируется в OutlookAddin.cpp OnStartupComplete.
Согласно вашему сообщению MyClass должен распространяться от IDispEventSimpleImpl<1 /*N*/, MyClass, &__uuidof(Outlook::ItemsEvents)>
, но какой из них? OutlookAddin или AutoSync?
Куда я должен положить этот код также?
CComPtr<Outlook::MAPIFolder> folder;
// get the folder you're interested in
CComPtr<Outlook::_Items> items;
hr = folder->get_Items(&items);
hr = MyItemEvents::DispEventAdvise(items, &__uuidof(Outlook::ItemsEvents));
typedef IDispEventSimpleImpl<1 /*N*/, MyClass,
&__uuidof(Outlook::ItemsEvents)> MyItemEvents;
Я прочитал ссылки, которые вы размещены, но все еще иметь эти сомнения ...
Update 2
Это сложнее понять, чем я, хотя в первую очередь.
Так что я, как это:
OutlookAddin.h
class OutlookAddin :
public IDTExtensibility2,
public IDispEventSimpleImpl<1, OutlookAddin, &__uuidof(Outlook::ItemEvents)>
...
BEGIN_SINK_MAP(OutlookAddin)
SINK_ENTRY_INFO(1, __uuidof(Outlook::ItemEvents), 0xf002, OutlookAddin::OnItemChange, &OnSimpleEventInfo)
END_SINK_MAP()
...
void __stdcall OnItemChange();
'OnSimpleEventInfo' определяется как:
extern _ATL_FUNC_INFO OnSimpleEventInfo;
_ATL_FUNC_INFO OnSimpleEventInfo = {CC_STDCALL,VT_EMPTY,0};
затем в OutlookAddin.cpp, OnConnection метод:
CComPtr<Outlook::MAPIFolder> folder;
CComPtr<Outlook::_Items> items;
OutlookWorker::GetInstance()->GetNameSpacePtr()->GetDefaultFolder(olFolderContacts, &folder);
folder->get_Items(&items);
DispEventAdvise(items, &__uuidof(Outlook::ItemsEvents));
b eing 'OutlookWorker :: GetInstance() -> GetNameSpacePtr()' _NameSpacePtr, где сохраняется вся среда.
Ожидаемое поведение здесь заключается в том, чтобы запустить функцию OnItemChange из класса OutlookAddin при создании/редактировании/удалении ContactItem, но этого не происходит ... Я немного изменил структуру, чтобы все было в основном классе OutlookAddin , Затем по функции «OnItemChange» я запустил объект «AutoSync», о котором я вам говорил раньше.
В любом случае, я слежу за статьями, которые вы мне дали, очень полезно, спасибо. У вас еще есть какое-то другое предложение для меня?
Благодарю ваше терпение.
Спасибо, я собираюсь взять посмотрите на это;) – framara
Вопрос обновлен, если бы вы могли посмотреть. Благодарю. – framara
@framara, обновлено. –