Private Declare Function CLSIDFromProgID Lib "ole32.dll" (ByVal lpszProgID As _ Long, pCLSID As Any) As LongPrivate Declare Function StringFromCLSID Lib "ole32.dll" (pCLSID As Any, _ lpszProgID As Long) As LongPrivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As _ Any, source As Any, ByVal bytes As Long)Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal pv As Long)' Convert a ProgID (such as "Word.Application") into the' string representation of its CLSIDFunction ProgIdToCLSID(ByVal ProgID 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 ' get the CLSID in binary form CLSIDFromProgID StrPtr(ProgID), guid(0) ' convert to a string, get pointer to result StringFromCLSID guid(0), pResult ' 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 ProgIdToCLSID = Space$(length 2) CopyMemory ByVal StrPtr(ProgIdToCLSID), ByVal pResult, length ' release the memory allocated to the string CoTaskMemFree pResultEnd Function


Top Software Development Companies in USA
Navigating the tech landscape to find the right partner is crucial yet challenging. This article offers a comparative glimpse into the top software development companies