Я создаю 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;
}
Я использую это для автоматизации слов, как в пример
Но теперь мне нужно использовать метод из интерфейса IOleCommandTarget::Exec
для скрытия строки меню для открытия слова. Я знаю, что с этим методом это возможно.
Мой вопрос, как я могу получить IOleCommandTarget
использовать его для вызова Exec и, конечно, иметь возможность использовать IDispatch
строка в примере.
Ваш код правильный, просто добавьте:
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);