2010-05-26 18 views
5

HRESULT (http://en.wikipedia.org/wiki/HRESULT) değerlerinin insan tarafından okunabilen bir mesaja nasıl programlı olarak çevrilebileceği konusunda bilgi veren herhangi biri var mı?HRESULT okunabilir bir mesaja dönüştürme

ERR.EXE yardımcı programının bunu yaptığını biliyorum, ancak uygulamanızın şifreli bir 0x800A03EC yerine kullanıcılara anlamlı bir ileti göstermesi gerekiyor.

+0

Burada bir şey mi eksik? Neden "Try ... Catch" kullanıp hata mesajını kullanıcılarınıza gösteremiyorsunuz? –

+0

@Otaku, Excel VSTO çağrıları yapıyorum, bu çağrıların bazıları başarısız olduklarında ve COMException mesaj bölümünde başka hiçbir şey bir HRESULT döndürecek. – code4life

+0

@ToddMain Bir istisna kimliğini bir kerede göstermemek için kaydetmek iyi bir fikirdir. Her sınıfın bilmemesi gereken bir GUI veya bir terminal ile çalışıyorum ve ne çeşit bir GUI, bir kerede bir mesaj gösteremiyorum. C++ 'da her sınıftayken «LastError» değişkenleri oluşturdum. Bu C# de iyi bir fikir değil mi? –

cevap

3

Bu değerle HRESULT'tan mesaj oluşturmak için yerleşik destek yok. COM bileşeni IErrorInfo arabirimini kullanarak, kendisini uygulamak gerekiyor.

.NET içine yerleşik CLR birlikte çalışma desteği zaten bunu otomatik olarak yapar, asla yardıma gerek duymazsınız. Bir COM arabirimi yöntemi bir hata kodu döndürdüğünde otomatik olarak uygun bir özel durum atar. Message özelliği IErrorInfo'dan başlatıldı. Mesaj olarak iyi bir şey elde edemezseniz, COM sunucusu bunu sağlamaz.

0x800a03ec için büyük olasılıkla, birçok hata nedenleriyle kese düşük düzeyli bir Excel hatasıdır. Bunun için "excel error 1004" yazarak çok sayıda isabet bulabilirsiniz.

+0

Ama belki de bir şekilde bir özel HRESULT ile bir istisna atmak mümkündür? Bu şekilde istisna bir bilgi mesajı ve vb. –

3

FormatMessage işlevini denediniz mi? PInvoke mekanizmasını kullanarak C# 'dan kullanabilirsiniz.

İlgili konular