Je fais un complément pour Outlook 2007 en C++.Add-in Outlook. Comment gérer les événements d'événements
Je dois capturer les événements comme créer, modifier ou supprimer des éléments d'Outlook (contact, rendez-vous, tâches et notes) mais les seules information/exemples que j'ai trouvés sont pour Visual Basic donc je ne sais pas comment connecter le gestionnaire d'événements.
Voici quelques informations concernant: http://msdn.microsoft.com/en-us/library/bb208390(v=office.12).aspx
Toute aide est la bienvenue :) Merci
Mise à jour
Désolé pour prendre ce temps pour mettre à jour, je suis hors de la ville. J'ai quelques doutes/problèmes que vous pouvez savoir comment aider.
Dans mon cas, je prends ce projet qui a été lancé, donc je suis un peu confus à propos de tout cela. J'ai la classe OutlookAddin qui dérive de IDTExtensibility2. J'ai aussi cette autre classe, appelée AutoSync, où je voudrais faire toutes les méthodes quand l'événement se déclenche et ainsi. Un objet de cette classe est initialisé dans OutlookAddin.cpp OnStartupComplete.
Selon votre MyClass post devrait s'étend de IDispEventSimpleImpl<1 /*N*/, MyClass, &__uuidof(Outlook::ItemsEvents)>
mais l'un d'entre eux? OutlookAddin ou AutoSync?
Où devrais-je aussi mettre ce code?
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;
J'ai lu les liens que vous posté mais toujours avoir ces doutes ...
Mise à jour 2
Ceci est plus compliqué à comprendre que je pensais dans un premier temps.
J'ai donc comme ceci:
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' est défini comme:
extern _ATL_FUNC_INFO OnSimpleEventInfo;
_ATL_FUNC_INFO OnSimpleEventInfo = {CC_STDCALL,VT_EMPTY,0};
puis à OutlookAddin.cpp, méthode 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()' le _NameSpacePtr où tout l'environnement est conservé.
Le comportement attendu ici est de déclencher la fonction 'OnItemChange' de la classe OutlookAddin lorsqu'un ContactItem est créé/édité/supprimé mais cela ne se produit pas ... J'ai changé un peu la structure pour tout ce qui est dans la classe principale OutlookAddin . Puis sur la fonction 'OnItemChange' je vais lancer l'objet 'AutoSync' que je vous ai déjà dit.
En tout cas, je suis les articles que vous m'avez donnés, vraiment utiles, merci. Avez-vous encore d'autres suggestions pour moi?
Merci de votre patience.
Merci, je vais prendre un coup d'oeil à ceci;) – framara
Question mise à jour, si vous pouviez jeter un coup d'oeil. Merci. – framara
@framara, mise à jour. –