扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
interface IDispatch : IUnknown { virtual HRESULT GetTypeInfoCount(UINT* pctinfo) = 0; virtual HRESULT GetTypeInfo(UINT itinfo, LCID lcid, ITypeInfo** pptinfo) = 0; virtual HRESULT GetIDsOfNames (REFIID riid, LPOLESTR* rgszNames, UINT cNames, LCID lcid, DISPID* rgdispid) = 0; virtual HRESULT Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARMS* pdispparams, VARIANT* pvarResult, EXCEPINFO* pexcepinfo, UINT* puArgErr ) = 0; } |
// 从ProgID得到CLSID wchar_t progid[] = L"MSCAL.Calendar.7"; CLSID clsid; if (FAILED(::CLSIDFromProgID(progid, &clsid))) return; // 得到IDispatch接口指针 IDispatch* pIDispatch = NULL; if (FAILED(::CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, IID_IDispatch, (void**)&pIDispatch))) return; // 得到DISPID DISPID dispid; OLECHAR* func = L"Today"; if (FAILED(pIDispatch->GetIDsOfNames(IID_NULL, &func, 1, GetUserDefaultLCID(), &dispid))) return; // 通过DISPID使用Today方法 DISPPARAMS dispparams = {NULL}; if (FAILED(pIDispatch->Invoke(dispid, IID_NULL, GetUserDefaultLCID(), DISPATCH_METHOD, &dispparams, NULL, NULL, NULL))) return; // 将日期移动到今天 AfxMessageBox("日期成功移动到今天"); |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。