.net中调用com的具体操作(总结)
2004-11-17 16:22
405 查看
获得某个com实例的接口地址(知道此实例的具体接口)
IntPtr ppv = Marshal.GetComInterfaceForObject( this.m_view, typeof(HelperItems.IShellView) );
获得某个com实例的接口地址(不知道此实例的具体接口)
IntPtr iunkMe = Marshal.GetIUnknownForObject(this);
通过riid,获得具体的接口地址
Marshal.QueryInterface( iunkMe, ref riid, out ppv );
从某个com实例的接口地址获得这个实例
HelperItems.ICommDlgBrowser cdlg = (HelperItems.ICommDlgBrowser) Marshal.GetObjectForIUnknown( Marshal.GetComInterfaceForObject(this.m_view.m_shell, typeof(HelperItems.ICommDlgBrowser)) );
注意 获取对象的某种接口指针 可以在marshal.queryinterface和mashal.getcominterfaceforobject中间选择
此方法成功 ppv = Marshal.GetComInterfaceForObject(dropHandle, typeof(IDropTarget));
此方法没有成功 Marshal.QueryInterface(iunkDropHandle, ref guidIDropTarget, out ppv)
将传入的结构指针所指结构拷贝到管理代码中来
Dim videoHeader As VIDEOHDR = New VIDEOHDR
videoHeader = CType(GetStructure(lpVHdr, videoHeader), VIDEOHDR) ' lpVHdr是传入的结构指针
Public Shared Function GetStructure(ByVal ptr As IntPtr, ByVal struc As ValueType) As Object
Return Marshal.PtrToStructure(ptr, struc.GetType())
End Function
IntPtr ppv = Marshal.GetComInterfaceForObject( this.m_view, typeof(HelperItems.IShellView) );
获得某个com实例的接口地址(不知道此实例的具体接口)
IntPtr iunkMe = Marshal.GetIUnknownForObject(this);
通过riid,获得具体的接口地址
Marshal.QueryInterface( iunkMe, ref riid, out ppv );
从某个com实例的接口地址获得这个实例
HelperItems.ICommDlgBrowser cdlg = (HelperItems.ICommDlgBrowser) Marshal.GetObjectForIUnknown( Marshal.GetComInterfaceForObject(this.m_view.m_shell, typeof(HelperItems.ICommDlgBrowser)) );
注意 获取对象的某种接口指针 可以在marshal.queryinterface和mashal.getcominterfaceforobject中间选择
此方法成功 ppv = Marshal.GetComInterfaceForObject(dropHandle, typeof(IDropTarget));
此方法没有成功 Marshal.QueryInterface(iunkDropHandle, ref guidIDropTarget, out ppv)
将传入的结构指针所指结构拷贝到管理代码中来
Dim videoHeader As VIDEOHDR = New VIDEOHDR
videoHeader = CType(GetStructure(lpVHdr, videoHeader), VIDEOHDR) ' lpVHdr是传入的结构指针
Public Shared Function GetStructure(ByVal ptr As IntPtr, ByVal struc As ValueType) As Object
Return Marshal.PtrToStructure(ptr, struc.GetType())
End Function
相关文章推荐
- email验证
- ELMAH-Error Logging Modules And Handlers
- 示例代码:利用Sps提供的remoting服务,把office文档在线转换成html文档(包括页面图片的文件)
- 用户控件的使用(二)
- 代理服务器&Google
- 我的BLOG宣言
- 期待新致的offer
- Java繁體中文處理完全攻略(一)
- search for 病毒
- 关于struts几个常用类的解释
- Sun翻身武器Solaris10亮相 共投入5亿美元
- JSP中的日期问题及其它
- SWsoft公司推出Windows版Linux服务器软件
- 进制转换3例
- Sun 将推出新操作系统与 Linux 抗衡
- 红帽 CEO:Linux 本是免费 无惧中国用户盗版
- 微软牵手 Vintela 视其为 Unix/Linux 战略关键
- 今天才开通blog,留个纪念!
- FTP反馈信息集锦
- 为什么中国的外包开发预算报价会高(1)