如鵬網(wǎng) 大學生計算機學習社區(qū)

          CowNew開源團隊

          http://www.cownew.com 郵件請聯(lián)系 about521 at 163.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            363 隨筆 :: 2 文章 :: 808 評論 :: 0 Trackbacks
          在與COM對象交互的時候有的時候我們得到一個對象,我們想知道它的類型,可以使用Object.GetType()方法得到的類型卻是System.__ComObject,因為System.__ComObject是代表所有COM對象的,但是它對我們來說是沒有任何意義的。如果想得到System.__ComObject的真正類型只要使用Microsoft.VisualBasic.Information.TypeName(objWindow.Object)就可以了,如果是非VB.net工程需要引用Microsoft.VisualBasic.dll 才能保證編譯通過。
          12月6日添加說明:
          經(jīng)過反編譯TypeName方法,發(fā)現(xiàn)其核心實現(xiàn)為:
              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接口來完成的(呵呵,貌似也只有這一種方式)
          posted on 2007-12-05 13:01 CowNew開源團隊 閱讀(5705) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 罗城| 曲沃县| 额敏县| 磴口县| 通化县| 修文县| 河池市| 深州市| 内江市| 巴里| 中江县| 清原| 友谊县| 周宁县| 营山县| 德令哈市| 嘉鱼县| 柳江县| 涟源市| 绩溪县| SHOW| 酒泉市| 三门峡市| 马尔康县| 林州市| 乌什县| 石城县| 中超| 东阿县| 额尔古纳市| 农安县| 恩平市| 灵丘县| 浮梁县| 平远县| 九龙坡区| 图木舒克市| 芦溪县| 尤溪县| 揭阳市| 鹤峰县|