aik*_*eru 1 c# com activex createinstance
这是我的第一个问题!我想实例化一个COM对象并将其转换为IDispatchEx,以便我可以枚举其成员.这是一个例子:
Type _COMType = System.Type.GetTypeFromProgID("Scripting.FileSystemObject");
var _COMObject = (IDispatchEx)Activator.CreateInstance(_COMType);
我的IDispatchEx与本网站(不是我的网站)上的相同,只是GetNextDispID和GetMemberName返回一个int(我希望用于MSDN上描述的HRESULT ).
上面的例子不起作用.有没有办法实例化COM对象,就像从Active Scripting转换为IDispatchEx接口一样?
感谢您提供的所有帮助/建议!
此操作失败,因为对IID为"{A6EF9860-C720-11D0-9337-00A0C90DCAA9}"的接口的COM组件的QueryInterface调用由于以下错误而失败:不支持此类接口(HRESULT异常:0x80004002(E_NOINTERFACE)) .
您获得的异常消息与响铃一样清晰,Scripting.FileSystemObject只是不实现IDispatchEx接口.只有IDispatch.这很好用:
Type t = System.Type.GetTypeFromProgID("Scripting.FileSystemObject");
var obj = Activator.CreateInstance(t);
var iobj = (stdole.IDispatch)obj;
Run Code Online (Sandbox Code Playgroud)
你已经完成了,你不能强制COM coclass来实现一个接口.我不希望有很多COM类来实现它,IDispatchEx非常模糊.它适合JScript模具.
| 归档时间: |
|
| 查看次数: |
1026 次 |
| 最近记录: |