在与COM对象交互的时候有的时候我们得到一个对象,我们想知道它的类型,可以使用Object.GetType()方法得到的类型却是System.__ComObject,因为System.__ComObject是代表所有COM对象的,但是它对我们来说是没有任何意义的。如果想得到System.__ComObject的真正类型只要使用Microsoft.VisualBasic.Information.TypeName(objWindow.Object)就可以了,如果是非VB.net工程需要引用Microsoft.VisualBasic.dll 才能保证编译通过。
12月6日添加说明:
经过反编译TypeName方法,发现其核心实现为:
    UnsafeNativeMethods.ITypeInfo pTypeInfo = null;
    string pBstrName = null;
    string pBstrDocString = null;
    string pBstrHelpFile = null;
    UnsafeNativeMethods.IDispatch dispatch = VarName as UnsafeNativeMethods.IDispatch;
    if (((dispatch != null) && (dispatch.GetTypeInfo(0, 0x409, out pTypeInfo) >= 0)) && (pTypeInfo.GetDocumentation(-1, out pBstrName, out pBstrDocString, out num, out pBstrHelpFile) >= 0))
    {
        str5 = pBstrName;
    }

和猜想的一致,它确实是通过IDispatch接口来完成的(呵呵,貌似也只有这一种方式)

转载于:https://blog.51cto.com/cownew/86662

获取System.__ComObject的真正类型相关推荐

  1. 无法将类型为“System.__ComObject”的 COM 对象强制转换为类类型“mshtml.HTMLInputElementClass...

    环境: VS2008+Win7 64bit 代码: public string Execute(WebBrowser browser, HtmlElement btn) { bool loadFini ...

  2. 无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型,原因为没有注册类...

    错误描述 e = {"无法将类型为"System.__ComObject"的 COM 对象强制转换为接口类型"OpcRcw.Da.IOPCServer" ...

  3. 无法将类型为“System.__ComObject”的对象强制转换为类型“ESRI.ArcGIS.DataSourcesGDB.FileGDBWorkspaceFactoryClass

    错误:无法将类型为"System.__ComObject"的对象强制转换为类型"ESRI.ArcGIS.DataSourcesGDB.FileGDBWorkspaceFa ...

  4. 无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“Microsoft.VisualStudio.OLE.Interop.IServiceProvider”。

    无法将类型为"System.__ComObject"的 COM 对象强制转换为接口类型"Microsoft.VisualStudio.OLE.Interop.IServi ...

  5. java 获取子类实际的类型名_Java 泛型类 以及 泛型类获取子类的具体参数类型 以及 获取子类型具体参数的实例...

    前言: 要点都在代码注释中 1.泛型类 GenericInterface package com.demo.generic; import java.lang.reflect.Parameterize ...

  6. java 泛型参数具体类型获取、泛型返回具体类型获取

    自从java支持泛型后,现在,spring生态中的框架及目前的应用都使用了泛型.有的框架如mybatis和spring都需要反射获取类型,以使得序列化和反序列化得以实现,但有时候我们根据项目的需要获取 ...

  7. Windows批处理命令快速获取文件夹下特定类型的文件名(2022.5.15)

    Windows批处理命令快速获取文件夹下特定类型的文件名 (2022.5.15) 1.需求分析 2.batch简介 3.代码实现 3.1 八种编程语言分别实现 3.1.1 C# 实现 3.1.2 C+ ...

  8. 关于WPF 中 “System.Windows.Markup.XamlParseException”类型的未经处理的异常在 PresentationFramework.dll 中发生 异常的处理。

    关于WPF 中 "System.Windows.Markup.XamlParseException"类型的未经处理的异常在 PresentationFramework.dll 中发 ...

  9. 根据FileUpload控件名获取上传文件(大小)类型

    /// <summary>     /// 根据FileUpload控件名获取上传文件(大小)类型     /// </summary>     /// <param n ...

  10. win7系统怎么获取system权限?

    日常使用系统中,经常有一些像恶意顽固程序及无法删除文件.需要高权限操作.丢失密码.要求最高私密性的问题.在本文中,将教你如何使用Windows 7最高权限账户system,解决各位TX的所有此类问题! ...

最新文章

  1. web-view 跳转小程序页面 网页跳转小程序
  2. android onclick事件和ontouch事件发生先后顺序和关联
  3. 高性能服务器架构思路【不仅是思路】
  4. Oracle sqlldr
  5. 图像入门二之视频操作
  6. bootstrap媒体查询类型的值_Redis系列-数据类型sorted_set
  7. window server 2008配置FTP服务器550 Access is denied. 问题解决办法
  8. win10 休眠设置无效_睡眠模式在Windows 10系统上不起作用?
  9. vs2010最佳配色选择_2010年代35部最佳电影
  10. (转)protein 数据库
  11. HDU 4173(计算几何
  12. Java游戏开发超级玛丽总结_超级玛丽游戏设计(java)
  13. 堆溢出-unlink
  14. 安装win10 ltsc应用商店
  15. mac 不显示 外接屏幕_教大家Mac外接显示器设置教程
  16. c++ 两个Map容器的差异性比较,返回差异内容
  17. 程序员跳槽B站遭老东家索赔200万,法院判定无需赔偿,竞业限制不应阻碍工程师再就业...
  18. 生物信息学概论_生物信息学 | 技术与多学科融合,贝勒走在时代发展的前端
  19. pygame.USEREVENT创建多个用户事件
  20. 驳少壮不努力,老大搞IT

热门文章

  1. php 智能输入提示插件,PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能_PHP...
  2. python中tell函数_PYTHON学习14.09:Python seek()和tell()函数详解
  3. es 怎么验证是否安装成功_ElasticSearch(ES)预警服务 Watcher安装以及探究
  4. Java获取文件的目录_Java获取文件目录(路径)的方式
  5. 问题 A: 【一本通提高组合数学】Bullcow 牡牛和牝牛
  6. 073:【Django数据库】ORM聚合函数详解-Count
  7. 第五章 基于引用计数的内存管理
  8. Mac下安装Fiddler抓包工具(别试了,会报错,没办法使用)
  9. DNS Flood Detector让DNS更安全
  10. 重读TCP/IP(2)之链路层