Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Outlook中处理HRESULT加载项?_C#_Outlook Addin_Comexception - Fatal编程技术网

C# 如何在Outlook中处理HRESULT加载项?

C# 如何在Outlook中处理HRESULT加载项?,c#,outlook-addin,comexception,C#,Outlook Addin,Comexception,基于这个答案,我想知道,如果我只需要查看异常的特定部分,如何正确处理OSs和多个版本的OL中的ComException。比如说, private const uint HRESULT_OPERATIONABORTED = 0x80004004; // ... try { // something that could throw COMExceptions } catch (System.Runtime.InteropServices.COMException

基于这个答案,我想知道,如果我只需要查看异常的特定部分,如何正确处理OSs和多个版本的OL中的ComException。比如说,

private const uint HRESULT_OPERATIONABORTED = 0x80004004;

// ...

    try {
        // something that could throw COMExceptions
    } catch (System.Runtime.InteropServices.COMException e) {

        switch ((uint)e.ErrorCode) {

            case HRESULT_OPERATIONABORTED:
                break;

            default:
                break;
        }
    }

这是否足够跨平台,或者有必要只考虑错误代码的一部分吗?


编辑-只是为了澄清一下,我的确切问题是,将
(uint)e.ErrorCode
0x80004004
进行比较是否太具体(也就是说,无论操作系统/操作系统如何,我是否总是得到该特定错误的
0x80004004
),或者如果这是做事情的正确方式。

,您可能还需要考虑捕获Sosith.OutOfMeMyExeExt异常和其他异常,这些异常是COM对象返回的HESREST的结果。并非所有失败的HRESULT都会导致COMException


对于我看到的大多数MAPI错误,错误代码与标准C MAPI头文件中声明的代码没有差异,因此我认为switch语句可以。换句话说,该方法不应该比C编写的MAPI客户端应用程序更不兼容。

您可能还想考虑捕获SCORM.OutOfMeMyExExt异常和其他来自COM对象返回的HEST结果的异常。并非所有失败的HRESULT都会导致COMException


对于我看到的大多数MAPI错误,错误代码与标准C MAPI头文件中声明的代码没有差异,因此我认为switch语句可以。换句话说,该方法的兼容性不应低于C编写的MAPI客户端应用程序。

就跨平台兼容而言,COM只在Windows上运行,您不必担心。同样,错误代码也是定义良好的。您可以在WinError.h SDK头文件中查找标准COM错误代码。这是E_ABORT。我建议您实际使用该标识符


您可以在c:\program files\microsoft SDK\windows\v6.0\include中找到此标题。它是VS2010的v7.0版。

您不必担心,就跨平台compat而言,COM只在Windows上运行。同样,错误代码也是定义良好的。您可以在WinError.h SDK头文件中查找标准COM错误代码。这是E_ABORT。我建议您实际使用该标识符


您可以在c:\program files\microsoft SDK\windows\v6.0\include中找到此标题。它是VS2010的v7.0版。

我的意思是介于XP和Win7之间。谢谢你的标题,这正是我所需要的。我的意思是在XP和Win7之间。谢谢你的头球,这正是我需要的。