Объект Word.Application
, который вы создаете, имеет метод Quit()
, который вы можете дополнительно вызвать перед тем, как Release()
указатель вашего интерфейса на объект:
Выход из Microsoft Word и при необходимости сохранение или маршрутизация открытых документов.
Поскольку у вас есть интерфейс IDispatch
к объекту, вы можете использовать методы IDispatch::GetIDsOfNames()
и IDispatch::Invoke()
для вызова Word.Application.Quit()
метод, например:
int _tmain(int argc, _TCHAR* argv[])
{
HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
if (SUCCEEDED(hr))
{
CLSID clsid;
hr = CLSIDFromProgID(L"Word.Application", &clsid);
if (SUCCEEDED(hr))
{
IDispatch *pWApp;
hr = CoCreateInstance(clsid, NULL, CLSCTX_LOCAL_SERVER, IID_IDispatch, (void **)&pWApp);
if (SUCCEEDED(hr))
{
cout << "success" << endl;
// use pWApp as needed ...
DISPID dispID;
LPOLESTR ptName = L"Quit"; //name of the method
hr = pWApp->GetIDsOfNames(IID_NULL, &ptName, 1, LOCALE_USER_DEFAULT, &dispID);
if (SUCCEEDED(hr))
{
//no parameters
DISPPARAMS dp = {NULL, NULL, 0, 0};
hr = pWApp->Invoke(dispID, IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_METHOD, &dp, NULL, NULL, NULL);
}
pWApp->Release();
}
}
CoUninitialize();
}
return 0;
}