知道clsid为
{d6277990-4c6a-11cf-8d87-00aa0060f5bf}
(就是mstask.dll),我想调用其中的 IShellFolder 该怎么办?多谢!

解决方案 »

  1.   

    仅仅只有CLSID,是无法创建接口对象的,可以使用OLE/COM Object Viewer查找CLSID和IID,我一般是打开ActiveX Control Test Container,再在tools菜单里找这个工具。找到对应的object后,要查看详细的接口描述,再在这个对象上点右键,即出现ITypeLib View,包含了您所需的接口详细信息。GOOK LUCK.
      

  2.   

    多谢楼上的兄弟,在 ActiveX Control Test Container 中怎么加载?
    我想至少可以用dll的方式初始化吧!?
      

  3.   

    ActiveX Control Test Container 是VC带的一个工具,
    你也可以通过OLE View查看你需要操作的DLL的类型库,里面有全部需要使用的信息(包括对象的IID)
      

  4.   

    先得到GUID,CLSID的 IUNKNOWN接口,然后再QueryInterface()你需要的IShellFolder即可CLSID clsid;
    HRESULT hr = CLSIDFromString( L"{d6277990-4c6a-11cf-8d87-00aa0060f5bf}", &clsid);
    if ( hr != NOERROR )
    {
    AfxMessageBox("get clsid error...");
    return;
    }

    IUnknown * puk=NULL;
    hr = ::CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, IID_IUnknown, (void**)&puk); 
    if (FAILED(hr) || puk==NULL)
    {
    AfxMessageBox("Get IUnknown interface error...");
    return;
    }puk->QueryInterface()//查找出IShellFolder。