Перевести HRESULT в читаемое сообщение - PullRequest
5 голосов
/ 26 мая 2010

Может ли кто-нибудь предоставить некоторую информацию о том, как программно перевести HRESULT (http://en.wikipedia.org/wiki/HRESULT) значения в удобочитаемое сообщение?

Я знаю, что это делает утилита ERR.EXE, но мое приложение должно отображать какое-то значимое сообщение для моих пользователей, а не загадочное 0x800A03EC.

Ответы [ 2 ]

3 голосов
/ 26 мая 2010

Нет встроенной поддержки генерации сообщений из HRESULT с этим значением. Компонент COM должен реализовать это сам, используя интерфейс IErrorInfo.

Поддержка взаимодействия CLR, встроенная в .NET, уже делает это автоматически, вам никогда не потребуется помощь. Он автоматически генерирует соответствующее исключение, когда видит, что метод интерфейса COM возвращает код ошибки. Свойство Message инициализируется из IErrorInfo. Если в качестве сообщения вы не получите ничего приличного, то COM-сервер просто не предоставит его.

Что вероятно для 0x800a03ec, это ошибка Excel низкого уровня с множеством причин. Вы можете найти множество хитов для этого, прибегая к помощи «Excel error 1004».

3 голосов
/ 26 мая 2010

Вы пробовали Функция FormatMessage ? Вы можете использовать его из C #, используя механизм PInvoke.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...