2009-03-31 6 views
1

ich habe dieses "simple" Outlook-Objekt:Howto erstellen ein Outlook.Folder Objekt aus Outlook.Application.ActiveExplorer.CurrentFolder

Outlook.Explorer olExplorer = this.Application.ActiveExplorer(); 

in "ThisAddIn_Startup" i registrieren olExplorer.FolderSwitch Ereignis ein Funktion olExplorer_FolderSwitch(). Da muß ich ein Outlook-Ordner-Objekt aus dem aktuellen Ordner erstellen:

Outlook.Folder f = olExplorer.CurrentFolder as Outlook.Folder; 

Aber: die Eigenschaft „Current“ vom Typ MAPIFolder ist und kann nicht als Outlook.Folder verwendet werden. Wie kann ich die CurrentFolder-Eigenschaft in einen Outlook.Folder "werfen"? - ohne den Event-Handler zu verlieren? Wenn ich diese einfache Umwandlung zu tun, um das Objekt f wird die Veranstaltung BeforeItemMove nicht ausgelöst - weil f NULL ist, wo olExplorer.CurrentFolder ist nicht

Antwort

0

Ich weiß nicht wirklich bekommen die Frage, wie es zu der nach Dokumentation Explorer.CurrentFolder gibt ein Objekt vom Typ Outlook.Folder zurück, nicht MAPIFolder. Ich persönlich habe keine VSTO (noch 2007 spezifische) Entwicklung gemacht, aber bist du sicher, dass du nicht verschiedene Versionen des Objektmodells vermischst?

Wie auch immer, Outlook.Folder und MAPIFolder gemeinsam die EntryID und StoreID -Eigenschaft. Sie können diese verwenden, um den entsprechenden Outlook.Folder mit NameSpace.GetFolderFromID zu suchen. Der betreffende Namespace wird über Application.GetNamespace ("MAPI") erworben.

+0

Explorer.CurrentFolder gibt ein Objekt vom Typ MAPIFolder zurück. – Vasyl

1

Ich habe keinen einfachen Weg gefunden. Sie konnten den Outlook.Folder von den Ordnersitzungen finden.

Wenn Sie die EntryID vergleichen, erhalten Sie den richtigen Ordner.

beachten Sie den Start bei 1 und zählen gleich oder weniger, um alle Ihre Ordner zu erhalten.

1

Es gibt einfache Art und Weise umwandeln MAPIFolder zu Outlook.Folder explizite Umwandlung versuchen:

Outlook.Explorer olExplorer = this.Application.ActiveExplorer(); 
Outlook.Folder f = (Outlook.Folder)olExplorer.CurrentFolder; 
0

Outlook.Folder ist die gleiche wie Outlook.MAPIFolder.