http://bugs.winehq.org/show_bug.cgi?id=14567
Summary: Shell32 IAutoCompleteDropDown needed for VS.NET 2005 and other tools which use MS DevEnv UI engine Product: Wine Version: CVS/GIT Platform: PC OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: shell32 AssignedTo: wine-bugs@winehq.org ReportedBy: focht@gmx.net
Hello,
just visiting back VS.NET 2005 and friends... The annoying error message box, stating "The operation could not be completed" can be prevented by implementing IAutoCompleteDropDown in shell32. Due to this missing interface, the Devenv GUI is not really usable at all. Also the .NET CLR GUI debugger that ships with the .NET 2.0 SDK suffers from this bug.
+shell,+ole
--- snip --- .. trace:ole:CoCreateInstance (rclsid={00bb2763-6a77-11d0-a535-00c04fd7d062}, pUnkOuter=(nil), dwClsContext=00000001, riid={eac04bc0-3791-11d2-bb95-0060977b464c}, ppv=0x50757698) trace:ole:CoGetClassObject CLSID: {00bb2763-6a77-11d0-a535-00c04fd7d062}, IID: {00000001-0000-0000-c000-000000000046} trace:ole:WINE_StringFromCLSID 0x5005ec20->{00BB2763-6A77-11D0-A535-00C04FD7D062} trace:ole:apartment_getclassobject found L"shell32.dll" already loaded trace:ole:apartment_getclassobject calling DllGetClassObject 0x66426d20 trace:shell:HCR_RegOpenClassIDKey CLSID{00bb2763-6a77-11d0-a535-00c04fd7d062} trace:shell:HCR_GetClassNameA -- AutoComplete trace:shell:DllGetClassObject CLSID: {00bb2763-6a77-11d0-a535-00c04fd7d062} (AutoComplete),IID: {00000001-0000-0000-c000-000000000046} (IID_IClassFactory) trace:shell:DllGetClassObject index[7] trace:shell:IDefClF_fnConstructor (0xc0c740)(null) trace:shell:IDefClF_fnQueryInterface (0xc0c740)->( {00000001-0000-0000-c000-000000000046} (IID_IClassFactory)) trace:shell:IDefClF_fnRelease (0xc0c740)->(count=2) trace:shell:DllGetClassObject -- pointer to class factory: 0xc0c740 trace:shell:IDefClF_fnCreateInstance 0xc0c740->((nil), {eac04bc0-3791-11d2-bb95-0060977b464c} (IID_IAutoComplete2),0x50757698) trace:shell:IAutoComplete_fnQueryInterface (0xc26b68)->( IID: {eac04bc0-3791-11d2-bb95-0060977b464c} (IID_IAutoComplete2),0x50757698) trace:shell:IAutoComplete2_fnAddRef (0xc26b68)->(count=1) trace:shell:IAutoComplete_fnAddRef (0xc26b68)->(1) trace:shell:IAutoComplete_fnQueryInterface -- Interface: (0x50757698)->(0xc26b6c) trace:shell:IAutoComplete_Constructor -- (0xc26b68)-> trace:shell:IDefClF_fnRelease (0xc0c740)->(count=1) trace:shell:IDefClF_fnRelease -- destroying IClassFactory(0xc0c740) trace:ole:CoCreateInstance (rclsid={00000323-0000-0000-c000-000000000046}, pUnkOuter=(nil), dwClsContext=00000001, riid={00000146-0000-0000-c000-000000000046}, ppv=0x55c538) trace:ole:CoCreateInstance Retrieved GIT (0xc1c540) trace:ole:StdGlobalInterfaceTable_RegisterInterfaceInGlobal iface=0xc1c540, pUnk=0x6512c8, riid={6d5140c1-7436-11ce-8034-00aa006009fa}, pdwCookie=0x0x320ff4 trace:ole:StdGlobalInterfaceTable_RegisterInterfaceInGlobal About to marshal the interface trace:ole:CoMarshalInterface (0xc26f88, {6d5140c1-7436-11ce-8034-00aa006009fa}, 0x6512c8, 3, (nil), MSHLFLAGS_TABLESTRONG) trace:ole:CoGetStandardMarshal ({6d5140c1-7436-11ce-8034-00aa006009fa},0x6512c8,3,(nil),1,0x320f5c) trace:ole:CoMarshalInterface Using standard marshaling trace:ole:CoMarshalInterface Calling IMarshal::MarshalInterace trace:ole:StdMarshalImpl_MarshalInterface (...,{6d5140c1-7436-11ce-8034-00aa006009fa},...) trace:ole:CoGetPSClsid () riid={6d5140c1-7436-11ce-8034-00aa006009fa}, pclsid=0x320e04 trace:ole:WINE_StringFromCLSID 0x50064ef8->{6D5140C1-7436-11CE-8034-00AA006009FA} trace:ole:__CLSIDFromString L"{b8da6310-e19b-11d0-933c-00a0c90dcaa9}" -> 0x320e04 trace:ole:CoGetPSClsid () Returning CLSID={b8da6310-e19b-11d0-933c-00a0c90dcaa9} trace:ole:CoGetClassObject CLSID: {b8da6310-e19b-11d0-933c-00a0c90dcaa9}, IID: {d5f569d0-593b-101a-b569-08002b2dbf7a} trace:ole:WINE_StringFromCLSID 0x320e04->{B8DA6310-E19B-11D0-933C-00A0C90DCAA9} trace:ole:apartment_getclassobject found L"C:\windows\system32\actxprxy.dll" already loaded trace:ole:apartment_getclassobject calling DllGetClassObject 0x60a76650 trace:ole:NdrDllGetClassObject ({b8da6310-e19b-11d0-933c-00a0c90dcaa9}, {d5f569d0-593b-101a-b569-08002b2dbf7a}, 0x320e14, 0x60a7784c, {b8da6310-e19b-11d0-933c-00a0c90dcaa9}, 0x60a7785c) trace:ole:CStdPSFactory_QueryInterface (0x60a7785c)->QueryInterface({d5f569d0-593b-101a-b569-08002b2dbf7a},0x320e14) trace:ole:CStdPSFactory_CreateStub (0x60a7785c)->CreateStub({6d5140c1-7436-11ce-8034-00aa006009fa},0x6512c8,0x320e1c) trace:ole:FindProxyInfo found: ProxyInfo 0x60a77040 Index 0 trace:ole:CStdStubBuffer_Construct (0x6512c8,0x60a770e0,0x60a7785c,0x320e1c) IServiceProvider trace:ole:CStdStubBuffer_Construct iid={6d5140c1-7436-11ce-8034-00aa006009fa} trace:ole:CStdStubBuffer_Construct vtbl=0x60a770f0 trace:ole:CStdPSFactory_AddRef (0x60a7785c)->AddRef() trace:ole:CStdPSFactory_Release (0x60a7785c)->Release() trace:ole:stub_manager_int_addref before 1 trace:ole:get_stub_manager_from_object found 0xc1c688 for object 0x6512c8 trace:ole:marshal_object registering new ifstub on pre-existing manager trace:ole:NdrCStdStubBuffer_Release (0xc0fe28)->Release() trace:ole:CStdStubBuffer_Disconnect (0xc0fe28)->Disconnect() trace:ole:CStdPSFactory_Release (0x60a7785c)->Release() trace:ole:stub_manager_ext_addref added 1 refs to 0xc1c688 (oid 3), rc is now 4 trace:ole:RPC_RegisterInterface ({6d5140c1-7436-11ce-8034-00aa006009fa}) trace:ole:stub_manager_int_release after 1 trace:ole:CoMarshalInterface completed with hr 0x00000000 trace:ole:StdGlobalInterfaceTable_RegisterInterfaceInGlobal Cookie is 0xf103 trace:shell:IAutoComplete2_fnInit (0xc26b68) trace:shell:IAutoComplete_fnInit (0xc26b68)->(0x000201da, 0x55c4e4, (null), L"%s") trace:shell:IAutoComplete_fnInit ACO_AUTOAPPEND trace:shell:IAutoComplete2_fnSetOptions (0xc26b68) -> (0x71) trace:shell:HCR_RegOpenClassIDKey CLSID{3cd141f4-3c6a-11d2-bcaa-00c04fd929db} trace:shell:HCR_GetClassNameA -- trace:shell:IAutoComplete2_fnQueryInterface (0xc26b68)->( {3cd141f4-3c6a-11d2-bcaa-00c04fd929db} (unknown),0x50757690) trace:shell:HCR_RegOpenClassIDKey CLSID{3cd141f4-3c6a-11d2-bcaa-00c04fd929db} trace:shell:HCR_GetClassNameA -- trace:shell:IAutoComplete_fnQueryInterface (0xc26b68)->( IID: {3cd141f4-3c6a-11d2-bcaa-00c04fd929db} (unknown),0x50757690) trace:shell:IAutoComplete_fnQueryInterface -- Interface: E_NOINTERFACE trace:shell:IAutoComplete2_fnRelease (0xc26b68)->(count=2) trace:shell:IAutoComplete_fnRelease (0xc26b68)->(2) trace:ole:GetErrorInfo (0, 0x3210a4, (nil)) .. trace:ole:ICreateErrorInfoImpl_SetDescription (0xc24818): L"The operation could not be completed " .. --- snip ---
I added/implemented the missing interface (include/shldisp.idl, dlls/shell32/autocomplete.c, dlls/shell32/debughlp.c) and verified it fixes the annoying error. To give the implementor/submitter full freedom, I'll omit a patch here ;-)
Regards