COM-Exception Code identifizieren

19/07/2008 - 21:16 von Thomas Mueller | Report spam
Hallo @all,

vielleicht gleich die schlechte Nachricht vorn weg: Ich bin ein reines
.NET-Kind und habe von C++ und COM nicht wirklich die große Ahnung.

Ich programmiere mit .NET seit einiger Zeit Add-ins für Visual Studio. Das
klappt wunderbar und mit diesem Bereich habe ich auch keine Probleme. Meine
Frage stellt sich mehr aus Neugier und vor allem auch, um mit COM-Exceptions
richtig umgehen zu können. Also hier kommt sie die Frage:

In einem Add-in für Visual Studio versuche ich in einer Methode auf die
Eigenschaften eines CommandBarButton-Objektes zuzugreifen. Dabei bekomme ich
eine Ausnahme von HRESULT: 0x800A01A8. Gibt es irgendeine Möglichkeit diese
0x800A01A8 zu entschlüsseln? Wie erfahre ich was da wirklich schief gelaufen
ist? Bei meinen ersten Suchen auf den Seiten des MSDn habe ich keine wirklich
Hilfe gefunden.

Wàre dankbar für jeden Hinweis.

Beste Grüße
TOM (www.tom-mue.de)
 

Lesen sie die antworten

#1 Kerem Gümrükcü
20/07/2008 - 05:44 | Warnen spam
Hallo Thmas,

vielleicht gleich die schlechte Nachricht vorn weg: Ich bin ein reines
.NET-Kind und habe von C++ und COM nicht wirklich die große Ahnung.



Welch schande, wie kann man nur,;-)


Ich programmiere mit .NET seit einiger Zeit Add-ins für Visual Studio. Das
klappt wunderbar und mit diesem Bereich habe ich auch keine Probleme. Meine
Frage stellt sich mehr aus Neugier und vor allem auch, um mit
COM-Exceptions
richtig umgehen zu können. Also hier kommt sie die Frage:



Dann schiess mal los,


In einem Add-in für Visual Studio versuche ich in einer Methode auf die
Eigenschaften eines CommandBarButton-Objektes zuzugreifen. Dabei bekomme
ich
eine Ausnahme von HRESULT: 0x800A01A8. Gibt es irgendeine Möglichkeit diese
0x800A01A8 zu entschlüsseln? Wie erfahre ich was da wirklich schief
gelaufen
ist? Bei meinen ersten Suchen auf den Seiten des MSDn habe ich keine
wirklich
Hilfe gefunden.



Dann geben Sie mal acht Herr Mueller, denn das wird Ihnen sicher helfen.
Zunàchst einmal solltest Du Dir das Add-In Framework des VStudio ansehen
und welche möglichen Fehlermeldungen es Dir zurückgeben kann. Das findest
Du alles in der MSDN, mit ein bisschen Suchen und Geduld. Dann solltest Du
Dir die Marshal-Klasse in dem Namespace "System.Runtime.InteropServices"
ansehen,
die folgende (statische) Methoden zur Verfügung stellt:

Marshal.GetHRForException(...);
Marshal.GetHRForException(...);
Marshal.GetHRForLastWin32Error(...);
Marshal.GetExceptionForHR(...);
Marshal.ThrowExceptionForHR(...);

Ansonsten lohnt es sich die die Marshal-Klasse im allgemeinen
anzusehen, da vieles brauchbares aus der Windows API in
dieser Klasse gekapselt ist, das man ansonsten per PIvoke aus
den Libraries selber holen muss,...

Wenn Du weiter auf COM und .NET programmieren willst,
dann gibt es ein sehr gutes Buch dazu, was es lohnt gekauft
zu werden:

[COM Programming with Microsoft® .NET]
http://www.microsoft.com/MSPress/books/6426.aspx

Hier zu kaufen:
http://www.amazon.com/Programming-M...0735618755


So Herr Mueller, das sollte Ihnen helfen,

Viel Erfog noch,...

Grüße

Kerem


Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Latest Project: http://www.codeplex.com/restarts
Latest Open-Source Projects: http://entwicklung.junetz.de
"This reply is provided as is, without warranty express or implied."

Ähnliche fragen