c ++ MS Word - OleAutomation

时间:2015-09-17 17:49:10

标签: c++ ms-word automation office-interop ole

我正在创建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行。

1 个答案:

答案 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);