Laden...

VSTO 2003 AddIn im Fehlerfall beenden

Erstellt von TinaQ vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.401 Views
T
TinaQ Themenstarter:in
166 Beiträge seit 2008
vor 13 Jahren
VSTO 2003 AddIn im Fehlerfall beenden

Hi,

ich versuche mein AddIn (Office 2003 - VSTO) im Fehlerfall sauber zu beenden. Leider bekomme ich das nicht so richtig fertig.

Entweder wird das ganze Programm beendet oder es läfut einfach weiter.

Wenn ich in der ersten Methode einen Fehler habe möchte ich das AddIn und nur das AddIn beenden.
Genauso wenn der Fehler in einer der anderen Methoden auftritt.

Doch wie mache ich das?

Habt ihr einen Tipp?

E
96 Beiträge seit 2008
vor 13 Jahren

Hi,

ich mach das mit Environment.Exit(0);

Hilft das?

T
TinaQ Themenstarter:in
166 Beiträge seit 2008
vor 13 Jahren

Hi Endro,

danke für die super schnelle Anwort, leider wird mit dieser Anweisung die gesamte Anwendung geschlossen und nicht nur das AddIn.

Es muss doch möglich sein das AddIn im Fehlerfall zu beenden ohne die ganze Anwendung zu schliesen, oder?


try{

}catch (exeption ex){

Fehler ausgeben;
AddIn beenden;

}
Gelöschter Account
vor 13 Jahren

Beenden ist der falsche Begriff glaube ich.
Du möchtest das die Anwendung dein Addin entlädt.
Die COMAddins Auflistung enthält aber kein Remove oder ähnliches.
(Ich weiss es nicht bei allen Office Produkten aus dem Kopf)
Dem hörensagen nach geht das bei Addin Express, wie sie das machen weiss
ich nicht, sicher nativ in COM und C++

Ich kenne den Gesamtzusammenhang nicht warum du das tun willst (addin löschen?) aber evtl. kannst du die Programmlogik in ein anderes Assembly (exe) auslagern und dieses beenden.

T
TinaQ Themenstarter:in
166 Beiträge seit 2008
vor 13 Jahren

Hi Sebastian,

vielen Dank für deinen Beitrag. ja womöglich wäre das eine Möglichkeit.

Ich möchte einen Anhang einer eMail auslesen, jedoch soll nur jeder User den Teil des Anhanges sehen (verschlüsselte Datei) für den er zuständig ist.
Die Zuständigkeit kann ich über .ini Datei erfahren.

Im Moment schaue ich ist im Anhang die entsprechende Datei, wenn ja dann lese ich die .ini ....
Falls die .ini nicht da ist, oder eben die Falschen Bereichtigungen oder .ini nicht lesbar bekomme ich eine Fehermeldung aber das Programm läuft ungewollt weiter.

Genau das selbe wenn mit der Verschlüsselten Datei ...

Eigentlich sollte dann die Ausführung des AddIns beendet werden, aber die Möglichkeit weiter bestehen, dass die nächste eMail auf nen Richtigen Anhang ausgeführt werden kann.

Ich dachte ich könnte einfach die Ausführung des AddIns unterbrechen und mit ner neuen eMail wieder weiter machen.
Aber wenn ich das richtig verstehe dann muß ich das anders lösen, oder?

L
27 Beiträge seit 2011
vor 13 Jahren

Hallo,
ich hatte das Problem, nur für bestimmte Worddokumente eine CustomTaskPane einblenden zu wollen, bzw. beim Schließen des Dokuments auch die zugehörige CTP "deaktivieren" zu müssen, beim nächsten Dokument aber wieder ggf. eine neue anzuzeigen.

Ich ziele jetzt auf eine Auflistung (ich bin jetzt bei VS 2010 und Office 2007) Microsoft.Office.Tools.CustomTaskPaneCollection CustomTaskPanes
in der automatisch generierten Klasse "ThisAddIn" oder wie die AddIn-Klasse mit Startup usw. genannt werden soll. Das ist in VS 2005/Office 2003 glaube ich ähnlich.

auf dieser CustomTaskPaneCollection kann mit Add und Remove ein Contol hinzugefügt oder entfernt werden. Mit dem Visible-Property des Controls könnten solche Fenster auch einfach auf unsichtbar geschaltet werden. ich habe aber jeweils beim Hinzufügen zur Collection noch einen Tag-String des Controls zur Identifikation gesetzt und dann ggf. die CTP-Instanz mit Remove aus der Collection entfernt und damit "sterben" lassen.
hier ein Code-Schnipsel:

if (IsXYZDocument(Doc))
{
  //das richtig getaggte AddIn entladen.
  var _tmpPanes = CustomTaskPanes.Where(e => e.Title.StartsWith("XYZ AddIn") && ((string) e.Control.Tag) == Doc.Name);
  if (_tmpPanes.Count() > 0)
  {
    var _tmpPane = _tmpPanes.First();
    this.CustomTaskPanes.Remove(_tmpPane);
  }
}

ist das bei Outlook ähnlich?

Von außerhalb des AddIn-Codes kannst du über Globals.ThisAddIn.CustomTaskPanes auf diese Klasse zugreifen.

Vielleicht ist das ja eine Spur.