Пример #1
1
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."));	
}
Пример #4
1
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
}