Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: VB4/32,VB5,VB6
Expertise: Advanced
May 5, 1999



Building the Right Environment to Support AI, Machine Learning and Deep Learning

CLSIDToProgID - Convert a CLSID into a ProgID

Private Declare Function ProgIDFromCLSID Lib "ole32.dll" (pCLSID As Any, _
    lpszProgID As Long) As Long
Private Declare Function CLSIDFromString Lib "ole32.dll" (ByVal lpszProgID As _
    Long, pCLSID As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As _
    Any, source As Any, ByVal bytes As Long)

' Convert a string representation of a CLSID, including the
' surrounding brace brackets, into the corresponding ProgID.

Function CLSIDToProgID(ByVal CLSID As String) As String
    Dim pResult As Long, pChar As Long
    Dim char As Integer, length As Long
    ' No need to use a special UDT
    Dim guid(15) As Byte

    ' convert from string to a binary CLSID
    CLSIDFromString StrPtr(CLSID), guid(0)
    ' convert to a string, get pointer to result
    ProgIDFromCLSID guid(0), pResult
    ' return a null string if not found
    If pResult = 0 Then Exit Function

    ' find the terminating null char
    pChar = pResult - 2
        pChar = pChar + 2
        CopyMemory char, ByVal pChar, 2
    Loop While char
    ' now get the entire string in one operation
    length = pChar - pResult
    ' no need for a temporary string
    CLSIDToProgID = Space$(length \ 2)
    CopyMemory ByVal StrPtr(CLSIDToProgID), ByVal pResult, length
End Function
Francesco Balena
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date