将HRESULT转换为可读的消息

任何人都可以提供一些有关如何以编程方式将HRESULT( http://en.wikipedia.org/wiki/HRESULT )值转换为人类可读的消息的信息?

我知道实用程序ERR.EXE这样做,但我的应用程序需要显示一些有意义的消息给我的用户,而不是一个神秘的0x800A03EC。

没有内置的支持来从具有该值的HRESULT生成消息。 COM组件需要使用IErrorInfo接口来实现它自己。

.NET内置的CLR互操作支持已经自动完成了,你永远不需要帮忙。 当它看到一个COM接口方法返回一个失败代码时,它会自动抛出一个适当的exception。 Message属性从IErrorInfo初始化。 如果你没有什么象样的消息,那么COM服务器就不提供它。

这可能是0x800a03ec,这是一个抓包低级别的Excel错误,有很多错误原因。 你可以通过search“excel error 1004”find大量的点击。

你有没有尝试过FormatMessage函数? 您可以使用PInvoke机制从C#中使用它。