青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

SmartPtr
本博客已搬至:http://www.cnblogs.com/baiyanhuang/
posts - 29,comments - 176,trackbacks - 0
By SmartPtr(http://m.shnenglu.com/SmartPtr/)

  同事工作中遇到這個問題,不想在創建對象失敗時才知道原來對應的COM對象不可用。自己項目中用到了這個,遂總結一下,希望對大家有用。
  要判斷一個COM對象是否有用,首先要判斷該COM對象的CLSID是否在注冊表中注冊,但注冊了并不能保證其可用,因為如果我誤刪了該COM對象的載體-DLL(或exe),該COM對象仍然不能正確創建。所以我們還要判斷該載體文件是否存在,兩者都通過了,該COM對象才可正確創建。
   直接看代碼:
bool IsCOMAvailable(CString strGUID)
{
    
// 1. Try to open the HKEY_CLASSES_ROOT\CLSID\{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} key
    CString strKeyName = _T("CLSID\\"+ strGUID;
    HKEY hClsidKey;
    
if( ::RegOpenKeyEx( HKEY_CLASSES_ROOT, strKeyName, 0, KEY_QUERY_VALUE, &hClsidKey ) == ERROR_SUCCESS )
    {
        
// 2. Continue to open CLSID\{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\InProcServer32\(Default)
        HKEY hInProcServer32Key;
        
if( ::RegOpenKeyEx( hClsidKey, _T( "InProcServer32" ), 0, KEY_QUERY_VALUE, &hInProcServer32Key ) == ERROR_SUCCESS )
        {
            TCHAR tszServerPathName[_MAX_PATH];
            DWORD dwSize 
= sizeof( tszServerPathName );
            DWORD dwType;
            
// 3. Get the com dll path
            if( ::RegQueryValueEx( hInProcServer32Key, NULL, NULL, &dwType, (LPBYTE)tszServerPathName, &dwSize ) == ERROR_SUCCESS )
            {
                
if( dwType != REG_SZ )
                    
return false;
                
// 4. If the dll file exist
                CFileFind fileFind;
                
if(fileFind.FindFile(tszServerPathName))
                    
return true;
            }
            ::CloseHandle(hInProcServer32Key);
        }

        ::CloseHandle(hClsidKey);
    }
    
return false;
}
posted on 2007-07-06 21:30 SmartPtr 閱讀(1844) 評論(7)  編輯 收藏 引用

FeedBack:
# re: 如何判斷一個COM對象是否可用
2007-07-06 21:36 | 萬連文
這個直接看返回值比較好。  回復  更多評論
  
# re: 如何判斷一個COM對象是否可用
2007-07-06 21:44 | SmartPtr
假設講我的COM組件在系統運行一段時間后,在某個操作中才會被創建出來,而此時如果此對象無法創建,系統的任務就無法完成,此時用戶就要問了:“早干嘛去了,先讓我瞎忙活那么長時間, 不行早說嘛”, 呵呵,開個玩笑, 其實這就是我們同事遇到的現實問題。 但如果我在一開始就試圖創建全部的COM對象而只為了判斷其是否可創建,似乎消耗大了點,邏輯上也不太合理。  回復  更多評論
  
# re: 如何判斷一個COM對象是否可用
2007-07-06 23:36 | DC
我覺得也是直接看返回值比較好,因為你的這個操作只能確認COM對象是否存在,至于能否創建成功還不一定。  回復  更多評論
  
# re: 如何判斷一個COM對象是否可用
2007-07-07 20:07 | 萬連文
對一種技術的濫用,不規范使用是需要制止而不是想辦法包庇縱容,那樣只會是的系統越來越糟糕。  回復  更多評論
  
# re: 如何判斷一個COM對象是否可用
2007-07-07 20:17 | SmartPtr
to 萬連文
可否解釋一下, 實在是看不明白。。。。。  回復  更多評論
  
# re: 如何判斷一個COM對象是否可用
2007-07-09 09:53 | SuperPlayeR
我個人理解萬連文的意思就是說,針對你講述的這種情況,實際是因為com組件沒有被注冊造成了,而顯然使用COM技術的規范性操作當然是先注冊這個組件再使用。而博主您的想法也是通過讀取注冊表看該組件是否注冊了,其實也是一種不規范使用。  回復  更多評論
  
# re: 如何判斷一個COM對象是否可用
2007-07-09 19:54 | SmartPtr
To SuperPlyeR:

不僅是沒有注冊造成的, 應該說是某些異常操作使得該COM組件不可用, 可以是沒有注冊,也可以是注冊后注冊信息被誤操作覆蓋, 也可以是該DLL被刪除, 總之, 在系統運行之前先檢測一下這些東西是否都是ready的, 如果不是, 那就不要進去先。

之前有朋友說直接創建該COM對象來判斷, 但我覺得創建組件只是去做判斷,不太可取  回復  更多評論
  

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产成人午夜在线一区 | 一区二区日本视频| 国产精品久久久久久久午夜| 欧美精品在线视频观看| 欧美精品日韩综合在线| 国产精品成av人在线视午夜片| 在线免费精品视频| 在线看一区二区| 国产主播精品在线| 国产亚洲精品bt天堂精选| 国产日韩欧美精品一区| 激情综合久久| 亚洲成人自拍视频| 一区二区三区偷拍| 亚洲一区二区伦理| 亚洲一区二区三区免费视频| 国产精品99久久久久久久久| 亚洲欧美国产视频| 先锋亚洲精品| 久久亚洲影音av资源网| 美女成人午夜| 欧美视频一区在线观看| 在线欧美电影| 香蕉视频成人在线观看| 欧美99在线视频观看| 亚洲欧洲精品一区二区精品久久久 | 久久亚洲综合色一区二区三区| 亚洲第一天堂av| 欧美伦理在线观看| 国产主播一区二区三区四区| 99精品国产一区二区青青牛奶 | 亚洲视频一区二区免费在线观看| 亚洲高清资源综合久久精品| 欧美国产视频日韩| 一区二区三区视频免费在线观看| 国产精品久久福利| 国产区二精品视| 日韩亚洲欧美综合| 久久久欧美精品| 在线视频欧美一区| 久久精品主播| 国产精品色在线| 一本色道精品久久一区二区三区 | 久久久久国产精品一区二区| 久久精品国产免费看久久精品| 亚洲欧美国产一区二区三区| 久久久久久亚洲精品杨幂换脸 | 激情亚洲成人| 亚洲一区欧美二区| 另类综合日韩欧美亚洲| 久久亚洲国产成人| 一本色道久久综合亚洲精品不卡| 黄色另类av| 亚洲欧美一区在线| 99国产一区| 欧美承认网站| 亚洲激情欧美| 欧美激情精品久久久| 久久九九精品99国产精品| 国产一区二区三区直播精品电影| 欧美精品二区| 国产一区二区在线免费观看| 亚洲男人的天堂在线aⅴ视频| 国产精品高清一区二区三区| 亚洲精品一区中文| 午夜久久电影网| 亚洲欧美日韩国产| 国产美女精品| 久久国产精品99久久久久久老狼| 亚洲一区观看| 亚洲福利视频免费观看| 久久资源在线| 亚洲精华国产欧美| 亚洲开发第一视频在线播放| 欧美日韩一区二区三区| 亚洲永久字幕| 午夜视黄欧洲亚洲| 在线国产日韩| 亚洲人线精品午夜| 国产精品视频大全| 久久久亚洲一区| 老司机免费视频一区二区| 亚洲人午夜精品免费| 亚洲美女91| 国产日韩欧美一区二区三区在线观看 | 国产亚洲精品自拍| 久久国产一区| 久久综合影视| 亚洲一区二区欧美日韩| 午夜精品福利视频| 亚洲三级电影全部在线观看高清| 亚洲在线视频一区| 欧美亚洲一级| 日韩视频中午一区| 午夜精品久久| 亚洲国产天堂久久国产91| 99精品国产一区二区青青牛奶| 欧美亚洲在线| 亚洲精品乱码久久久久久蜜桃麻豆 | 国产精品国产三级国产普通话99| 国产午夜精品理论片a级大结局 | 欧美小视频在线| 欧美一区二区久久久| 久久亚洲精品一区二区| 这里只有精品视频在线| 久久国产精品99久久久久久老狼| 欧美日韩精品一区| 欧美自拍偷拍| 欧美日韩视频在线观看一区二区三区 | 久久成年人视频| 亚洲人成网站777色婷婷| 99视频有精品| 亚洲激情社区| 午夜精品福利在线观看| 亚洲精品四区| 香蕉久久一区二区不卡无毒影院| 欧美日韩视频在线一区二区| 欧美一区二区高清| 欧美日韩一区二区高清| 欧美成人一区二区三区在线观看| 久久久青草婷婷精品综合日韩| 国产日韩欧美电影在线观看| 最新成人在线| 亚洲人精品午夜在线观看| 久久精品国产一区二区三区| 亚洲综合社区| 国产精品久久国产精品99gif| 亚洲欧美经典视频| 欧美xx视频| 欧美高清在线一区| 亚洲电影欧美电影有声小说| 久久精品99| 午夜精品视频在线| 国产精品欧美精品| 亚洲一区二区免费视频| 亚洲一区免费网站| 国产精品亚洲人在线观看| 亚洲小视频在线| 午夜国产精品视频免费体验区| 亚洲一区二区三区777| 99视频精品全国免费| 欧美日韩亚洲一区三区 | 亚洲视频碰碰| 亚洲美女毛片| 欧美色网在线| 亚洲一级黄色av| 欧美一二三区在线观看| 国产欧美日韩综合一区在线观看 | 欧美精品成人在线| 最新中文字幕一区二区三区| 亚洲免费观看在线视频| 欧美精品亚洲一区二区在线播放| 亚洲免费观看高清完整版在线观看熊 | 91久久精品国产91性色tv| 亚洲成人在线视频播放| 毛片一区二区| 亚洲精品一区二区三区婷婷月 | 国产日韩欧美黄色| 性欧美videos另类喷潮| 麻豆精品在线视频| 最新国产の精品合集bt伙计| 麻豆免费精品视频| 99国产精品自拍| 久久久亚洲综合| 日韩视频在线你懂得| 欧美午夜www高清视频| 亚洲欧美一区在线| 欧美激情精品久久久久久| 日韩一级片网址| 国产视频一区二区三区在线观看| 亚洲免费观看在线观看| 亚洲香蕉网站| 黄色av一区| 欧美日韩国产免费| 欧美在线视频不卡| 亚洲免费av片| 久久午夜电影| 亚洲一区二区高清| 亚洲国产综合91精品麻豆| 国产精品日韩电影| 欧美成人综合一区| 久久精品一二三| 亚洲天堂av在线免费| 亚洲国产成人精品久久| 久久黄色级2电影| 一本色道久久加勒比精品| 激情久久久久久久| 国产精品亚洲产品| 欧美少妇一区二区| 免费亚洲电影在线| 久久精品理论片| 亚洲一区久久| 亚洲毛片在线观看| 亚洲激情一区| 欧美福利在线观看| 久久人人爽人人| 欧美在线观看视频一区二区| 亚洲图片在线| 在线午夜精品自拍| 亚洲人体大胆视频|