我正在创建IDispatch
,如下所示:
IDispatch *m_pWApp = NULL;
CoInitialize(NULL);
CLSID clsid;
m_hr = CLSIDFromProgID(L"Word.Application", &clsid);
if(SUCCEEDED(m_hr))
{
m_hr = CoCreateInstance(clsid, NULL, CLSCTX_LOCAL_SERVER, IID_IDispatch, (void **)&m_pWApp);
if(FAILED(m_hr)) m_pWApp=NULL;
}
我使用它来自动化example
中的单词但是现在我需要使用界面IOleCommandTarget::Exec
中的方法来隐藏菜单栏来打开单词。我知道用这种方法是可能的。
我的问题是,如何让IOleCommandTarget
使用它来调用Exec,当然还有可能在示例中使用IDispatch
行。
答案 0 :(得分:2)
您的代码是正确的,只需添加:
LPOLECOMMANDTARGET lpOleCommandTarget = NULL;
lpDispatch->QueryInterface(IID_IOleCommandTarget, (void**)&lpOleCommandTarget);
或
IOleCommandTarget* target;
disp->QueryInterface (IID_IOleCommandTarget, (void **) &target);
然后**lpOleCommandTarget->Exec(...);**
例如:
lpOleCommandTarget->Exec(NULL, OLECMDID_PRINT, 0, NULL,NULL);