<small id='X349w'></small><noframes id='X349w'>

    <i id='X349w'><tr id='X349w'><dt id='X349w'><q id='X349w'><span id='X349w'><b id='X349w'><form id='X349w'><ins id='X349w'></ins><ul id='X349w'></ul><sub id='X349w'></sub></form><legend id='X349w'></legend><bdo id='X349w'><pre id='X349w'><center id='X349w'></center></pre></bdo></b><th id='X349w'></th></span></q></dt></tr></i><div id='X349w'><tfoot id='X349w'></tfoot><dl id='X349w'><fieldset id='X349w'></fieldset></dl></div>
    <tfoot id='X349w'></tfoot>
      <bdo id='X349w'></bdo><ul id='X349w'></ul>
    <legend id='X349w'><style id='X349w'><dir id='X349w'><q id='X349w'></q></dir></style></legend>

      1. 从 C# 调用 IDispatch COM 接口的成员

        Calling a member of IDispatch COM interface from C#(从 C# 调用 IDispatch COM 接口的成员)
            <bdo id='siKot'></bdo><ul id='siKot'></ul>
            <i id='siKot'><tr id='siKot'><dt id='siKot'><q id='siKot'><span id='siKot'><b id='siKot'><form id='siKot'><ins id='siKot'></ins><ul id='siKot'></ul><sub id='siKot'></sub></form><legend id='siKot'></legend><bdo id='siKot'><pre id='siKot'><center id='siKot'></center></pre></bdo></b><th id='siKot'></th></span></q></dt></tr></i><div id='siKot'><tfoot id='siKot'></tfoot><dl id='siKot'><fieldset id='siKot'></fieldset></dl></div>
          • <legend id='siKot'><style id='siKot'><dir id='siKot'><q id='siKot'></q></dir></style></legend>

              <small id='siKot'></small><noframes id='siKot'>

                <tfoot id='siKot'></tfoot>

                    <tbody id='siKot'></tbody>
                • 本文介绍了从 C# 调用 IDispatch COM 接口的成员的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我想从实现 C# 中的 IDispatch 接口的 COM 对象调用 GetIdsOfNames 函数.我编写了以下代码,但由于 DISP_E_UNKNOWNNAME 失败.这是正确的方法吗?

                  I wanted to call the GetIdsOfNames function from a COM object that implements the IDispatch interface in c#. I've written the following code but it fails with the DISP_E_UNKNOWNNAME. Is this the correct approach to do this?

                   Object so = Activator.CreateInstance(Type.GetTypeFromProgID("ProgID"));            
                   Object[] args = new Object[5];
                   string[] rgsNames = new string[1];
                   rgsNames[0] = "PrintNormal";
                   uint LOCALE_SYSTEM_DEFAULT = 0x0800;
                   uint lcid = LOCALE_SYSTEM_DEFAULT;
                   int cNames = 1;
                   int[] rgDispId = new int[1];
                   args[0] = IntPtr.Zero;
                   args[1] = rgsNames;
                   args[2] = cNames;
                   args[3] = lcid;
                   args[4] = rgDispId;             
                   Object result = so.GetType().InvokeMember("GetIDsOfNames", BindingFlags.InvokeMethod, null, so, args);
                  

                  谢谢,

                  理查德

                  推荐答案

                  不可以,因为 InvokeMember 内部使用 GetIDsOfNames,而这个只检查实际方法,而不是 IDispatch 中的前 6 个.或者换句话说,不能使用 IDispatch 的方法 Invoke 调用 GetIDsOfNames.这就是 COM 的工作原理.

                  No you cannot, because InvokeMember internally uses GetIDsOfNames, and this one only checks actual methods, not the first 6 in IDispatch. Or in other words, GetIDsOfNames cannot be invoked using IDispatch's method Invoke. That is how COM works.

                  这篇关于从 C# 调用 IDispatch COM 接口的成员的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Performance overhead of using attributes in .NET(在 .NET 中使用属性的性能开销)
                  Accessing attribute info from DTE(从 DTE 访问属性信息)
                  c# Hide a property in datagridview with datasource(c#使用数据源隐藏datagridview中的属性)
                  Extract Display name and description Attribute from within a HTML helper(从 HTML 帮助器中提取显示名称和描述属性)
                  C# Attributes and their uses(C# 属性及其用途)
                  C# - Getting all enums value by attribute(C# - 按属性获取所有枚举值)

                    <legend id='tAe1Y'><style id='tAe1Y'><dir id='tAe1Y'><q id='tAe1Y'></q></dir></style></legend>

                    1. <small id='tAe1Y'></small><noframes id='tAe1Y'>

                      • <bdo id='tAe1Y'></bdo><ul id='tAe1Y'></ul>
                        <tfoot id='tAe1Y'></tfoot>

                            <tbody id='tAe1Y'></tbody>
                          <i id='tAe1Y'><tr id='tAe1Y'><dt id='tAe1Y'><q id='tAe1Y'><span id='tAe1Y'><b id='tAe1Y'><form id='tAe1Y'><ins id='tAe1Y'></ins><ul id='tAe1Y'></ul><sub id='tAe1Y'></sub></form><legend id='tAe1Y'></legend><bdo id='tAe1Y'><pre id='tAe1Y'><center id='tAe1Y'></center></pre></bdo></b><th id='tAe1Y'></th></span></q></dt></tr></i><div id='tAe1Y'><tfoot id='tAe1Y'></tfoot><dl id='tAe1Y'><fieldset id='tAe1Y'></fieldset></dl></div>