At 23:26 19.10.2003 -0500, jugg wrote:
> I think a WM_COPYDATA message is also sent to Shell_TrayWnd when > someone calls SHLoadInProc. I saw some code once that handled it, but > I cannot find a reference to it anywhere now. That might be what you're > seeing. > > -- > Maduin > Yah, lpData of the COPYDATASTRUCT looks like it contains a CLSID, so I'd say that's what it is, since SHLoadInProc passes a CLSID. But I don't see it being useful to us, as all it does is load the indicated container into the shell's process space.
The CLSID it is trying to load on my system is: {FFDC1A80-D527-11D0-A32C-34AF06C10000}
... REFCLSID rclsid = (REFCLSID)*(CLSID*)pcds->lpData; return pTrayService->HandleSHLoadInProc(rclsid); ...
HRESULT TrayService::HandleSHLoadInProc(REFCLSID rclsid) { IUnknown* pUnk = NULL;
HRESULT hr = CoCreateInstance(rclsid, NULL, CLSCTX_INPROC_SERVER, // | CLSCTX_INPROC_HANDLER, IID_IUnknown, (void**)&pUnk);
if(SUCCEEDED(hr) && pUnk) { pUnk->Release(); hr = NOERROR; } else { hr = CLASS_E_CLASSNOTAVAILABLE; }
return hr; }
Before I forget, here's the best description of SHLoadInProc I've found yet: http://groups.google.com/groups?q=SHLoadInProc&selm=udfvFdRl%24GA.188%40cppssbbsa05
__________________________________________________ Subscription options and archive: //www.freelists.org/list/shell-coding