我想从实现IDispatch接口的COM对象中调用GetIdsOfNames函数。我写了下面的代码,但是它失败了,并且DISP_E_UNKNOWNNAME。这是做这件事的正确方法吗?调用C#中IDispatch COM接口的成员#
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);
感谢,
理查德
谢谢。这真的很有帮助。 –