Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


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

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
    Do
        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.

 

 

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