如鵬網 大學生計算機學習社區

          CowNew開源團隊

          http://www.cownew.com 郵件請聯系 about521 at 163.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            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日添加說明:
          經過反編譯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接口來完成的(呵呵,貌似也只有這一種方式)
          posted on 2007-12-05 13:01 CowNew開源團隊 閱讀(5697) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 辉南县| 望江县| 巴林左旗| 利津县| 东宁县| 濉溪县| 清新县| 宁强县| 保德县| 宣威市| 南充市| 新源县| 阳曲县| 榆中县| 湟源县| 玉树县| 彰化县| 安顺市| 仲巴县| 台前县| 磐安县| 星座| 思茅市| 水城县| 方正县| 延长县| 广丰县| 九台市| 陇川县| 铜陵市| 从化市| 昌黎县| 江陵县| 金塔县| 霍林郭勒市| 司法| 博野县| 珲春市| 林州市| 黄平县| 合作市|