HRESULT nsScriptablePeer::GetIDispatch(IDispatch **pdisp) { if (pdisp == NULL) { return E_INVALIDARG; } *pdisp = NULL; IUnknownPtr unk; HRESULT hr = mPlugin->pControlSite->GetControlUnknown(&unk); if (unk.GetInterfacePtr() == NULL) { return E_FAIL; } IDispatchPtr disp = unk; if (disp.GetInterfacePtr() == NULL) { return E_FAIL; } *pdisp = disp.GetInterfacePtr(); (*pdisp)->AddRef(); return S_OK; }
void TestPowerPointControllerImpl::TestNewInstance() { IDispatchPtr spApplication(_T("PowerPoint.Application")); assertMessage(spApplication != NULL, _T("Failed to create an instance of [PowerPoint.Application]")); CControllerImplPtr spImplementor(CreateImplementor()); spImplementor->m_bUseExistingInstance = false; spImplementor->Initialize(); IDispatchPtr spHostApplication = spImplementor->GetApplication(); assertMessage(spHostApplication.GetInterfacePtr() != spApplication.GetInterfacePtr(), _T("CPowerPointControllerImpl::GetApplication did not create a new instance of PowerPoint.")); }
void TestPowerPointControllerImpl::TestUseExistingInstance() { IDispatchPtr spApplication(_T("PowerPoint.Application")); assertMessage(spApplication != NULL, _T("Failed to create an instance of [PowerPoint.Application]")); CControllerImplPtr spImplementor(CreateImplementor()); spImplementor->m_bUseExistingInstance = true; spImplementor->Initialize(); IDispatchPtr spHostApplication = spImplementor->GetApplication(); // There is a problem getting the current instance of PowerPoint 97; hence the instance returned will be nil. assertMessage(spHostApplication.GetInterfacePtr() != spApplication.GetInterfacePtr(), _T("CPowerPointControllerImpl::GetApplication should not return the existing instance of PowerPoint 97.")); }
HRESULT CSaveAsObject::PopulateContextItemsEx(IContextItemsPtr& pContextItems, DocProviderWorker* pWorker, IManDocumentPtr& pBaseDocument, long lFormatIndex, const CStdString& sFormatString, const CStdString& sDescription, IManSessionPtr& pSession, const CStdString& sFilename) { HRESULT hr = E_FAIL; try { hr = pContextItems.CreateInstance(__uuidof(ContextItems)); if(pContextItems == NULL) { LOG_WS_ERROR(_T("Context object is null")) ; return hr; } IManDatabasePtr pDatabase; if (NULL != pBaseDocument) { pDatabase = pBaseDocument->Database; } else { pDatabase = pSession->PreferredDatabase; } // Makes IW bring up supplemental dialog for .doc files if this line is omitted -> find out why IB/JC removed it _bstr_t bstrAppType = GetApplicationIDFromFileName(pDatabase, sFilename); PopulateContextItems(pContextItems, L"IManExt.Import.DocType", bstrAppType); if (!m_hWnd) { m_hWnd = GetDesktopWindow(); } hr = PopulateContextItems(pContextItems, L"ParentWindow", (long)m_hWnd); if (FAILED(hr)) { return hr; } IDispatchPtr pDMSDisp = pWorker->GetSessionsMgr()->GetNRTDMS().GetInterfacePtr(); if (pDMSDisp == NULL) { LOG_WS_ERROR(_T("QI for NRTDMS failed")); return S_FALSE; } hr = PopulateContextItems(pContextItems, L"IManDMS", pDMSDisp.GetInterfacePtr()); if (FAILED(hr)) { return hr; } hr = PopulateContextItems(pContextItems, L"IManExt.Import.DocDescription", (LPCTSTR) sDescription); if (FAILED(hr)) { return hr; } hr = PopulateContextItems(pContextItems, L"IManExt.Import.InheritSecurity", _T("True")); if (FAILED(hr)) { return hr; } if(IsAutoProfiling()) { hr = PopulateContextItems(pContextItems, L"IManExt.Import.DocAuthor", pSession->GetUserID()); if (FAILED(hr)) { return hr; } CStdString sDefaultDocClass = L"doc"; CStdString sAlternateFlagName = m_bConversion ? L"InterwovenUseConversionAlternateClassName" : L"InterwovenUseAlternateClassName"; CStdString sAlternateOptionClassName = m_bConversion ? L"InterwovenConversionAlternateClassName" : L"InterwovenAlternateClassName"; if (Workshare::OptionApi::GetBool(sAlternateFlagName)) { CStdString sClass = Workshare::OptionApi::GetString(sAlternateOptionClassName); if (!sClass.IsEmpty()) sDefaultDocClass = sClass; } hr = PopulateContextItems(pContextItems, L"IManExt.Import.DocClass", (LPCTSTR) sDefaultDocClass); if (FAILED(hr)) { return hr; } hr = PopulateContextItems(pContextItems, L"IManExt.Import.DocSubclass", (LPCTSTR) CIManageUtils::GetSubClassName(pDatabase, sDefaultDocClass)); if (FAILED(hr)) { return hr; } if ((pBaseDocument == NULL) && !m_sBaseFolderPath.IsEmpty()) { PopulateContextItems(pContextItems, L"IManExt2.DefaultLocation", m_sBaseFolderPath.c_str()); } } CSDSafeArray SDSafeArray; long lVectorIndex = CreateFileTypesSafeArray(sFormatString, SDSafeArray, lFormatIndex); hr = PopulateContextItems(pContextItems, L"IManExt.SaveAsOptionCmd.SaveAsTypesArray", SDSafeArray.AsVariant()); if (FAILED(hr)) { return hr; } PopulateContextItems(pContextItems, L"IManExt.SaveAsOptionCmd.SaveAsTypesIndex", lVectorIndex - 1L); } catch(_com_error& e) { CStdString sErr; sErr.Format(_T("Error %s. File description: %s."), e.ErrorMessage(), sDescription.c_str()); LOG_WS_ERROR(sErr.c_str()); return e.Error(); } return hr; // Set objCommand = New IMANEXTLib.ImportCmd //Set objContextItems = New IMANEXTLib.contextItems //objContextItems.Add "IManDestinationObject", db //objContextItems.Add "IManExt.Import.FileName", importPath //objContextItems.Add "IManExt.Import.DocAuthor", "jholehouse" //objContextItems.Add "IManExt.Import.DocOperator", sess.UserID //objContextItems.Add "IManExt.Import.DocDescription", importPath //objContextItems.Add "IManExt.Import.DocClass", "Delete" //objContextItems.Add "IManExt.Import.Custom2", "L10638" //objContextItems.Add "IManExt.Import.DocType", "WORD" //objContextItems.Add "IManExt.Import.Comment", "this is a test" //objContextItems.Add "IManExt.Import.InheritSecurity", True }