目的:1从DLL文件中读取它的CLSID(每个DLL文件的CLSID是永远不变的)
         2根据CLSID来判断是不是本机生成的(因为每台机器生成的CLSID都与机器有关,
          而且其它机器通过这个CLSID就可以找到些机器,如导出的组件就可以自动找到主机)
         3通过CLSID在注册表中找到ProgID
    参考:我知道VC中有CLSIDFromProgID和ProgIDFromCLSID可以实现1和3,但不知VB是
         否可以实现.
    QQ:38956002

解决方案 »

  1.   

    How To Call CLSID And ProgID Related COM APIs in Visual Basic
    http://support.microsoft.com/kb/183544/EN-US/介绍了怎么在VB中调用CLSIDFromProgID和ProgIDFromCLSID至于2我估计不可能,因为这个GUID生成的算法没公开,我估计即使公开了也应该是一种不可逆的算法。
      

  2.   

    这里的代码讲得很详细了~http://www.ccw.com.cn/htm/app/aprog/01_5_11_2.asp
      

  3.   

    一楼上面已经介绍一CLSIDFromProgID和ProgIDFromCLSID,那我就介绍一种
    ProgID and CLSID from DLL File:Reference:TypeLib Information TLBINF32.DLL(PATH:SystemDirectory)Dim TLIApp As TLI.TLIApplication
    Dim TLBInfo As TLI.TypeLibInfo
    Dim TypeInf As TLI.CoClassInfo
    Set TLIApp = New TLI.TLIApplication
    Dim ProgID As String
    Dim CLSID As StringSet TLBInfo = tliap.TypeLibInfoFromFile("e:\EasyDCOMObject.DLL")For Each TypeInf In TLBInfo.CoClasses
       ProgID = TypeInf.Name
       CLSID = TypeInf.Guid
       Debug.Print ProgID
       Debug.Print CLSID
    Next
    ------------------------------------------------------------------
    Dim TLIApp As Object
    Dim TLBInfo As Object
    Dim TypeInf As Object
    Set TLIApp = CreateObject("TLI.TLIApplication")
    Dim ProgID As String
    Dim CLSID As StringSet TLBInfo = tliap.TypeLibInfoFromFile("e:\EasyDCOMObject.DLL")For Each TypeInf In TLBInfo.CoClasses
       ProgID = TypeInf.Name
       CLSID = TypeInf.Guid
       Debug.Print ProgID
       Debug.Print CLSID
    Next
      

  4.   

    在VBaccelerator的代码里已经实现了GUID的生成算法,不过是不可逆的!