2009-06-30 8 views
2

Original-Beitrag:
Wenn Outlook gestartet wird, wird die Add-In geladen und fügt eine Symbolleiste mit einigen Tasten.Kann nicht CommandBar erstellen, wenn Outlook ausführen minimiert wird (Outlook 2007-Add-In)

Alles funktionierte gut, aber jetzt hat ein Benutzer seine Outlook-Verknüpfung festgelegt, um Outlook minimiert zu starten.

Und dann gibt OutlookApp.ActiveExplorer() null zurück. Gibt es ein Ereignis, das ich verwenden kann, um zu erfassen, wenn ein ActiveExplorer vorhanden ist, und dann die Befehlsleiste hinzuzufügen?

OutlookApp.Explorers.NewExplorer funktioniert nicht.

Auch wenn ich eine Messagebox vor dem Hinzufügen der CommandBar anzeigen: alles funktioniert gut, auch mit Outlook minimiert ... Warum?

edit:
die Forscher Zugriff auf proprerty direkt funktioniert, wie jemand in den Antworten gesagt. So löst das Problem für einen minimierten Ausblick ... Aber ...

Einer der Benutzer hat Outlook nicht minimiert ausgeführt, und noch das Plugin lädt, bevor eine GUI verfügbar ist. Es gibt nicht einmal 1-Explorer in der Explorers Sammlung :(Wie ist das möglich

bearbeiten 2:.
ich einen Timer versucht, mit wie 76mel vorgeschlagen, alle 100ms Active für null Überprüfung Dies fügt die wie erwartet Tasten, aber ich kann die Bild-Eigenschaft der Schaltfläche gesetzt

ich erhalte diese Ausnahme.
Katastrophale Fehler (Ausnahme von HRESULT: 0x8000FFFF (E_UNEXPECTED))

Antwort

2

Wenn keine UI vorhanden ist = kein Explorer :(

Versuchen Sie zu warten, bis das Explorers.NewExplorer-Ereignis ausgelöst wird, um ein CommandBars-Objekt abrufen zu können.

Update: Ja sieht es aus wie ein Timer wird den Trick ok ein bisschen hacky tun. Verbinden Sie also einen Timer, wenn Sie einen Null ActiveExplorer haben und prüfen Sie den ActiveExplorer onTick. Sobald der Benutzer Outlook öffnet, erhalten Sie einen aktiven Explorer und Sie können dann Symbolleisten hinzufügen.

+0

Funktioniert nicht, da dieses Ereignis beim Öffnen des Outlook-Hauptfensters nicht ausgelöst wird. Irgendwelche anderen Ideen? –

+0

Ja sorry, es scheint, dass es 2007 nicht feuert. Vielleicht ist ein Timer ist der Weg zu gehen .., die auf Null-Check für die Null auf Tick beginnen und endet, wenn nicht null.Ich werde ein Spiel haben ... – 76mel

+0

Wenn ich einen Timer verwende, kann ich die Symbole auf meinen Tasten nicht einstellen. Ich bekomme diese erstaunliche Ausnahme: "Katastrophaler Fehler (Ausnahme von HRESULT: 0x8000FFFF (E_UNEXPECTED))" –

2

Ich bin nicht mit verwalteten Addins vertraut, aber ich habe diese Antwort gefunden. Wenn kein ActiveExplorer vorhanden ist, versuchen Sie wie in Explorers [1] direkt auf die Explorers-Sammlungen zuzugreifen.

Ich hatte das gleiche Problem in meiner ECE und löste es durch Warten auf OnObjectChange Callback, die aufgerufen würde, wenn der Benutzer einen Ordner in Outlook ändert, und dann versuche ich, die Symbolleiste neu zu erstellen. Dies entspricht ungefähr dem FolderSwitch-Ereignis im Outlook-Objektmodell.

Nur meine 2c.

+0

Danke, das löste es in dem Fall, über den ich sprach. Aber jetzt gibt es ein anderes verwandtes Problem. Ich habe auch das OnObjectChange schon einmal ausprobiert, aber es ist irgendwie peinlich, da es nur die Symbolleiste lädt, wenn der Benutzer auf etwas in Outlook klickt. –

+0

Ja, Sie haben Recht, aber ich denke, es ist nur eine geringfügige Störung und die Nutzer können damit leben. Zumindest in meinem Plugin. Es muss immer noch eine Art von Ereignis geben, auf das wir reagieren können. Ich bin kein Freund der Timer-Lösungen. –

+0

Ich stimme dir zu Petr, das ist sehr hacky, aber das OOM ist nicht sehr Entwickler freundlich. Diese Technik gibt es schon seit langer Zeit seit 2000 Tagen. – 76mel

Verwandte Themen