Private Declare Function ProgIDFromCLSID Lib "ole32.dll" (pCLSID As Any, _ lpszProgID As Long) As LongPrivate Declare Function CLSIDFromString Lib "ole32.dll" (ByVal lpszProgID As _ Long, pCLSID As Any) As LongPrivate 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, lengthEnd Function


Inside Michigan’s Clean Energy Revolution
Democratic state legislators in Michigan continue to discuss and debate clean energy legislation in the hopes of establishing a comprehensive clean energy strategy for the