Hi, MSDN is a bit strange explaining "TreatAs" and "AutoTreatAs", however, for CoGetTreatAsClass it is clearly saying that it returns "TreatAs". Ciao, Marcus Changelog: Implemented CoGetTreatAsClass. Index: dlls/ole32/compobj.c =================================================================== RCS file: /home/wine/wine/dlls/ole32/compobj.c,v retrieving revision 1.71 diff -u -r1.71 compobj.c --- dlls/ole32/compobj.c 7 Jan 2003 20:36:28 -0000 1.71 +++ dlls/ole32/compobj.c 10 Jan 2003 15:57:06 -0000 @@ -1863,6 +1867,40 @@ return res; } +/****************************************************************************** + * CoGetTreatAsClass [OLE32.25] + * + * Reads the TreatAs value from a class. + */ +HRESULT WINAPI CoGetTreatAsClass(REFCLSID clsidOld, LPCLSID clsidNew) +{ + HKEY hkey = 0; + char buf[200], szClsidNew[200]; + HRESULT res = S_OK; + LONG len = sizeof(szClsidNew); + + FIXME("(%s,%p)\n", debugstr_guid(clsidOld), clsidNew); + sprintf(buf,"CLSID\\");WINE_StringFromCLSID(clsidOld,&buf[6]); + memcpy(clsidNew,clsidOld,sizeof(CLSID)); /* copy over old value */ + + if (RegOpenKeyA(HKEY_CLASSES_ROOT,buf,&hkey)) + { + res = REGDB_E_CLASSNOTREG; + goto done; + } + if (RegQueryValueA(hkey, "TreatAs", szClsidNew, &len)) + { + res = S_FALSE; + goto done; + } + res = __CLSIDFromStringA(szClsidNew,clsidNew); + if (FAILED(res)) + FIXME("Failed CLSIDFromStringA(%s), hres %lx?\n",szClsidNew,res); +done: + if (hkey) RegCloseKey(hkey); + return res; + +} /*********************************************************************** * IsEqualGUID [OLE32.76] Index: dlls/ole32/ole32.spec =================================================================== RCS file: /home/wine/wine/dlls/ole32/ole32.spec,v retrieving revision 1.42 diff -u -r1.42 ole32.spec --- dlls/ole32/ole32.spec 12 Dec 2002 02:17:39 -0000 1.42 +++ dlls/ole32/ole32.spec 10 Jan 2003 15:57:06 -0000 @@ -22,7 +22,7 @@ 22 stdcall CoGetPSClsid(ptr ptr) CoGetPSClsid 23 stdcall CoGetStandardMarshal(ptr ptr long ptr long ptr) CoGetStandardMarshal 24 stdcall CoGetState(ptr) CoGetState - 25 stub CoGetTreatAsClass # stdcall (ptr ptr) return 0,ERR_NOTIMPLEMENTED + 25 stdcall CoGetTreatAsClass(ptr ptr) CoGetTreatAsClass 26 stdcall CoInitialize(ptr) CoInitialize 27 stdcall CoInitializeWOW(long long) CoInitializeWOW 28 stub CoIsHandlerConnected # stdcall (ptr) return 0,ERR_NOTIMPLEMENTED