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

          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)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 尉犁县| 定西市| 石景山区| 云阳县| 柘城县| 绥滨县| 达拉特旗| 洪雅县| 龙里县| 崇明县| 清流县| 泰顺县| 东台市| 溧水县| 长岭县| 涟水县| 南汇区| 教育| 河东区| 中西区| 额尔古纳市| 凤台县| 怀安县| 区。| 安化县| 布尔津县| 施秉县| 阜城县| 平昌县| 奉化市| 陇川县| 文安县| 稻城县| 巴林右旗| 蒲江县| 隆昌县| 柞水县| 伊吾县| 阜平县| 海盐县| 龙游县|