CLSID clsid = {0x86A70E6F,0x3F1C,0x46B5,{0x86,0xF9,0xC2,0x1D, 0xAD,0x69,0xC7,0x56}}; CString strClsID; strClsID.Format("%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x",clsid.Data1, clsid.Data2,clsid.Data3,clsid.Data4[0],clsid.Data4[1],clsid.Data4[2], clsid.Data4[3],clsid.Data4[4],clsid.Data4[5],clsid.Data4[6], clsid.Data4[7]); SetDlgItemText(IDC_CLSID_ED,strClsID); HRESULT hr; LPOLESTR lpwProgID = NULL; hr = ::ProgIDFromCLSID( clsid, &lpwProgID ); if ( SUCCEEDED(hr) ) { //::MessageBoxW( NULL, lpwProgID, L"ProgID", MB_OK ); USES_CONVERSION; LPCTSTR lpstr = OLE2CT( lpwProgID ); SetDlgItemText(IDC_PROGID_ED,lpstr); IMalloc * pMalloc = NULL; hr = ::CoGetMalloc( 1, &pMalloc ); // 取得 IMalloc if ( SUCCEEDED(hr) ) { pMalloc->Free( lpwProgID ); // 释放ProgID内存 pMalloc->Release(); // 释放IMalloc } } |