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

SmartPtr
本博客已搬至:http://www.cnblogs.com/baiyanhuang/
posts - 29,comments - 176,trackbacks - 0
By SmartPtr(http://www.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 閱讀(1838) 評論(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對象來判斷, 但我覺得創建組件只是去做判斷,不太可取  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲高清视频一区二区| 亚洲精品美女免费| 亚洲女同性videos| 夜夜精品视频| 国产精品久久久久久久7电影| 亚洲无限av看| 午夜精品久久久久久久99水蜜桃| 欧美日韩一区综合| 欧美一区二区三区在线| 久久国产欧美| 91久久亚洲| 一级日韩一区在线观看| 亚洲久色影视| 亚洲视频免费看| 亚洲美女啪啪| 亚洲欧美在线x视频| 午夜精品久久久久久久久久久久久| 国产午夜亚洲精品羞羞网站 | 欧美国产精品久久| 亚洲欧美另类久久久精品2019| 性欧美8khd高清极品| 亚洲国产一区二区三区青草影视| 日韩亚洲欧美中文三级| 国产麻豆日韩| 亚洲精品久久久一区二区三区| 国产精品日韩在线| 亚洲国产成人久久综合一区| 国产精品毛片a∨一区二区三区| 久久综合色天天久久综合图片| 欧美精品少妇一区二区三区| 久久精品亚洲一区| 欧美日韩一二三四五区| 裸体素人女欧美日韩| 欧美亚男人的天堂| 亚洲国产精品第一区二区| 亚洲精品国产精品乱码不99按摩| 国产乱子伦一区二区三区国色天香 | 国产亚洲一本大道中文在线| 亚洲日本成人| 一区二区三区在线观看视频 | 欧美激情精品久久久久久大尺度 | 欧美乱大交xxxxx| 久久中文在线| 国产精品亚洲激情| 一区二区高清视频| 日韩一级在线观看| 巨胸喷奶水www久久久免费动漫| 午夜精品视频在线| 欧美日韩综合在线免费观看| 亚洲福利免费| 亚洲国产三级网| 久久精品电影| 久久久伊人欧美| 国产亚洲aⅴaaaaaa毛片| 亚洲视频免费观看| 亚洲女女做受ⅹxx高潮| 欧美日韩视频| 99综合精品| 亚洲一区三区视频在线观看| 欧美日韩国产综合久久| 91久久精品视频| 夜夜夜久久久| 欧美日韩另类在线| 一本久道久久久| 亚洲制服欧美中文字幕中文字幕| 欧美视频1区| 亚洲一区二区日本| 欧美亚洲一区三区| 国产一区二区电影在线观看 | 99精品久久| 亚洲综合日韩中文字幕v在线| 国产精品爱啪在线线免费观看| 亚洲精品中文字| 亚洲影院在线| 国产性天天综合网| 久久一区二区三区av| 亚洲第一福利视频| 一本久久a久久精品亚洲| 欧美日韩一区在线播放| 亚洲欧美日韩在线观看a三区 | 亚洲九九爱视频| 欧美系列电影免费观看| 午夜精品婷婷| 欧美激情在线狂野欧美精品| 一区二区欧美在线观看| 国产精品美女黄网| 久久久久久久久岛国免费| 亚洲第一在线综合网站| 亚洲一区免费网站| 国产原创一区二区| 欧美激情片在线观看| 亚洲午夜日本在线观看| 久久综合亚洲社区| 夜夜爽av福利精品导航| 国内一区二区三区| 欧美日韩国产欧| 香蕉成人啪国产精品视频综合网| 免费在线看一区| 国产精品萝li| 另类图片综合电影| 亚洲午夜精品久久| 欧美大色视频| 久久av二区| 99精品国产热久久91蜜凸| 国产美女精品免费电影| 欧美—级在线免费片| 性刺激综合网| 亚洲麻豆视频| 欧美顶级艳妇交换群宴| 欧美一区二区性| 99国产一区| 亚洲第一精品夜夜躁人人躁| 欧美午夜影院| 欧美精品免费在线观看| 久久精品国产99精品国产亚洲性色 | 欧美成年人视频网站欧美| 亚洲一区二区三区在线视频| 亚洲国产高清自拍| 国产日韩欧美综合一区| 欧美体内she精视频| 欧美插天视频在线播放| 久久久久国产一区二区三区四区| 亚洲视屏一区| 日韩一区二区免费高清| 亚洲高清av| 欧美成人官网二区| 美女精品自拍一二三四| 久久精品一区四区| 欧美中文字幕第一页| 亚洲欧美激情一区| 亚洲一区欧美| 午夜精品在线观看| 亚洲欧美电影院| 亚洲午夜精品国产| 在线综合视频| 亚洲视频在线观看一区| 99精品视频网| 中文在线资源观看视频网站免费不卡| 91久久精品视频| 亚洲精品免费观看| 亚洲精品欧美激情| aaa亚洲精品一二三区| 99国产精品自拍| 亚洲一区二区影院| 亚洲欧美日韩中文视频| 性做久久久久久久免费看| 午夜欧美精品久久久久久久| 欧美一区二区高清| 久久精品人人| 久久国产精品99久久久久久老狼| 国产一本一道久久香蕉| 久久亚洲综合| 亚洲午夜精品一区二区三区他趣| 国产日韩欧美麻豆| 国产亚洲成av人在线观看导航| 国产精品日韩一区| 黑丝一区二区| 亚洲精品系列| 亚洲一区二区视频| 久久精品30| 亚洲高清久久网| 日韩网站在线观看| 亚洲欧美在线一区二区| 久久精品观看| 欧美精品成人| 国产精品夜夜嗨| 在线看视频不卡| 一本久道久久久| 欧美在线播放一区| 欧美激情视频一区二区三区在线播放| 亚洲国产日日夜夜| 亚洲摸下面视频| 久久蜜桃资源一区二区老牛 | 亚洲美女在线看| 亚洲欧美日韩国产成人| 久久综合网色—综合色88| 亚洲欧洲在线播放| 欧美一区二区三区四区夜夜大片| 麻豆成人在线| 国产伦精品一区二区三区高清版| 亚洲高清不卡av| 香蕉精品999视频一区二区| 免费日韩视频| 亚洲嫩草精品久久| 欧美国产日韩一二三区| 国产欧美在线观看一区| 亚洲精品女av网站| 可以看av的网站久久看| 一区二区三区四区精品| 理论片一区二区在线| 国产精品一区二区三区免费观看| 91久久久久| 久久久久久久欧美精品| aaa亚洲精品一二三区| 久久久久久9| 国产欧美日韩精品a在线观看| 99ri日韩精品视频| 欧美大片免费看| 欧美一区深夜视频| 国产精品毛片a∨一区二区三区|国 |