示例#1
0
BOOL CmyWord::SaveDocumentAs(CString fileName)  
{  
    if (!m_wdDoc.m_lpDispatch)   
    {  
        AfxMessageBox(_T("Document获取失败!"), MB_OK|MB_ICONWARNING);  
        return FALSE;  
    }  
    COleVariant vTrue((short)TRUE),      
                vFalse((short)FALSE),  
                vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);  
    COleVariant vFileName(fileName);  
  
    m_wdDoc.SaveAs(  
                vFileName,    //VARIANT* FileName  
                vOptional,    //VARIANT* FileFormat  
                vOptional,    //VARIANT* LockComments  
                vOptional,    //VARIANT* Password  
                vOptional,    //VARIANT* AddToRecentFiles  
                vOptional,    //VARIANT* WritePassword  
                vOptional,    //VARIANT* ReadOnlyRecommended  
                vOptional,    //VARIANT* EmbedTrueTypeFonts  
                vOptional,    //VARIANT* SaveNativePictureFormat  
                vOptional,    //VARIANT* SaveFormsData  
                vOptional,    //VARIANT* SaveAsAOCELetter  
                vOptional,    //VARIANT* ReadOnlyRecommended  
                vOptional,    //VARIANT* EmbedTrueTypeFonts  
                vOptional,    //VARIANT* SaveNativePictureFormat  
                vOptional,    //VARIANT* SaveFormsData  
                vOptional    //VARIANT* SaveAsAOCELetter  
                );  
    return    TRUE;  
}  
示例#2
0
BOOL CmyWord::SetActiveDocument(short i)  
{  
    COleVariant     vIndex(i),vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);  
  
    m_wdDoc.AttachDispatch(m_wdDocs.Item(vIndex));  
    m_wdDoc.Activate();  
    if (!m_wdDoc.m_lpDispatch)   
    {  
        AfxMessageBox(_T("Document获取失败!"), MB_OK|MB_ICONWARNING);  
        return FALSE;  
    }  
    //得到selection变量  
    m_wdSel = m_wdApp.GetSelection();  
    if (!m_wdSel.m_lpDispatch)   
    {  
        AfxMessageBox(_T("Select获取失败!"), MB_OK|MB_ICONWARNING);  
        return FALSE;  
    }  
    //得到全部DOC的Range变量  
    m_wdRange = m_wdDoc.Range(vOptional,vOptional);  
    if(!m_wdRange.m_lpDispatch)  
    {  
        AfxMessageBox(_T("Range获取失败!"), MB_OK|MB_ICONWARNING);  
        return FALSE;  
    }  
    HideApp();  
    return TRUE;  
}  
示例#3
0
void CmyWord::InsertSymbol(const CString& strFont,long charNum)
{
	COleVariant vTrue((short)TRUE),      
		vFalse((short)FALSE),  
		vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);  
	COleVariant font(strFont);
	//long charNum = -3842;
	m_wdSel.InsertSymbol(charNum,font,vTrue,vOptional);
}
示例#4
0
void CmyWord::CreateTable(int nRow, int nCell )
{
	  COleVariant vTrue((short)TRUE),      
	              vFalse((short)FALSE),  
	              vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);  

	Range range = m_wdSel.GetRange();
	Tables tables = m_wdDoc.GetTables();
	m_table = tables.Add(range,nRow,nCell,vOptional,vOptional);
	Borders borders = m_table.GetBorders();
	borders.SetEnable(TRUE);
	Rows rows  =  m_table.GetRows();   
}
示例#5
0
void CmyWord::InsertFile(CString fileName)  
{  
    COleVariant     vFileName(fileName),  
                 vTrue((short)TRUE),  
                 vFalse((short)FALSE),  
                 vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR),  
                 vNull(_T(""));  
    /**//* 
    void InsertFile(LPCTSTR FileName, VARIANT* Range, VARIANT* ConfirmConversions, VARIANT* Link, VARIANT* Attachment); 
    */  
    m_wdSel.InsertFile(  
                    fileName,  
                    vNull,  
                    vFalse,  
                    vFalse,  
                    vFalse  
                    );  
}  
示例#6
0
BOOL CmyWord::isUsing(CString fileName)
{
	COleVariant vTrue((short)TRUE),      
		vFalse((short)FALSE),  
		vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

	CLSID clsid;
	CLSIDFromProgID( TEXT("Word.Application"), &clsid);  

	IUnknown *pUnk = NULL;

	HRESULT hr = ::GetActiveObject(clsid,NULL,&pUnk);
	if(FAILED(hr)|| pUnk == NULL) return FALSE;
	
	_Application wdApp;
	hr = pUnk->QueryInterface(IID_IDispatch, (LPVOID *)&wdApp);
	if(FAILED(hr)) return FALSE;

	Documents wdDocs = wdApp.GetDocuments();
	short docNum = (short)wdDocs.GetCount();

	//有word程序打开,但是没有打开文档,则关闭程序(防止word后台运行,影响计算机运行速度)
	if(docNum <= 0) 
	{
		wdApp.Quit(vFalse,vOptional,vOptional);
		wdApp.ReleaseDispatch();
		return FALSE;
	}

	_Document  wdDoc;
	wdDoc = wdApp.GetActiveDocument(); 
	if(wdDoc != NULL)
	{
		CString bstrName = wdDoc.GetFullName(); 
		if(bstrName == fileName)
		{
			return TRUE;
		}
	}
	return FALSE;

}
示例#7
0
BOOL CmyWord::CreateDocument()  
{  
    if (!m_wdDocs.m_lpDispatch)   
    {  
        AfxMessageBox(_T("Documents为空!"), MB_OK|MB_ICONWARNING);  
        return FALSE;  
    }  
  
    COleVariant varTrue(short(1),VT_BOOL),vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);  
    CComVariant Template(_T(""));    //没有使用WORD的文档模板  
    CComVariant NewTemplate(false),DocumentType(0),Visible;  
  
    m_wdDocs.Add(&Template,&NewTemplate,&DocumentType,&Visible);      
  
    //得到document变量  
    m_wdDoc = m_wdApp.GetActiveDocument();  
    if (!m_wdDoc.m_lpDispatch)   
    {  
        AfxMessageBox(_T("Document获取失败!"), MB_OK|MB_ICONWARNING);  
        return FALSE;  
    }  
    //得到selection变量  
    m_wdSel = m_wdApp.GetSelection();  
    if (!m_wdSel.m_lpDispatch)   
    {  
        AfxMessageBox(_T("Select获取失败!"), MB_OK|MB_ICONWARNING);  
        return FALSE;  
    }  
    //得到Range变量  
    m_wdRange = m_wdDoc.Range(vOptional,vOptional);  
    if(!m_wdRange.m_lpDispatch)  
    {  
        AfxMessageBox(_T("Range获取失败!"), MB_OK|MB_ICONWARNING);  
        return FALSE;  
    }  
  
    return TRUE;  
}  
示例#8
0
extern "C" int PASCAL EXPORT Convert( const char* strFile_In , const char* strFile_Out )
{
	AFX_MANAGE_STATE( AfxGetStaticModuleState( ) );
	int bRet = 0;

	TCHAR strFile_In_T[MAX_PATH] = { _T( "" ) };
	TCHAR strFile_Out_T[MAX_PATH] = { _T( "" ) };

	UTF8_TO_WIDE( strFile_In_T , strFile_In );
	UTF8_TO_WIDE( strFile_Out_T , strFile_Out );

	CoInitialize( NULL );
	PPT_Application pApp;
	COleException cErr;
	TCHAR strErr[256] = { _T( "" ) };
	cErr.GetErrorMessage( strErr , 256 );


	vector<int> vPIDs;
	GetPptPID( vPIDs , PROCESS_FACT::INIT );
	int nRet = pApp.CreateDispatch( _T( "Powerpoint.Application" ) , &cErr );
	if( nRet > 0 )
	{
		int nPID = GetPptPID( vPIDs , PROCESS_FACT::FIND );
		pApp.put_Visible( 1 );
		PPT_Presentations pPresentations = pApp.get_Presentations( );
		COleVariant vTrue( ( short ) TRUE ) , vFalse( ( short ) FALSE ) , vOptional( ( long ) DISP_E_PARAMNOTFOUND , VT_ERROR ) , vZ( ( short ) 0 ) ;

		try
		{
			//Open Workbook
			CString strBookPath( strFile_In_T );
			strBookPath.Replace( _T( "//" ) , _T( "\\" ) );
			PPT_Presentation pPresentation = pPresentations.Open( strBookPath , 0 , 0 , 0 );
			if( pPresentation.m_lpDispatch )
			{
				try
				{
					//Convert
					CString strPdfPath( strFile_Out_T );
					strPdfPath.Replace( _T( "//" ) , _T( "\\" ) );
					pPresentation.ExportAsFixedFormat( strPdfPath , ppFixedFormatTypePDF , 0 , 0 , ppPrintHandoutHorizontalFirst
						, ppPrintOutputSlides , 0 , NULL , ppPrintAll , NULL , false , false , true , true , false , vOptional );
					bRet = TASK_STATE::TASK_STATE_SUC;
					pPresentation.Close( );
				}
				catch( ... )
				{
					bRet = TASK_STATE::TASK_STATE_FILE_CONVERT_FAIL;
					pPresentation.Close( );
				}
				pPresentation.ReleaseDispatch( );
			}
		}
		catch( ... )
		{
			bRet = TASK_STATE::TASK_STATE_FILE_OPEN_FAIL;
		}
		pPresentations.ReleaseDispatch( );
		pApp.Quit( );
		pApp.ReleaseDispatch( );
		GetPptPID( vPIDs , PROCESS_FACT::TERMINATE , nPID );
		Sleep( 1000 );
	}
	CoUninitialize( );

	return bRet;
}
示例#9
0
BOOL CmyWord::OpenDocument(CString fileName)  
{  
    if (!m_wdDocs.m_lpDispatch)   
    {  
        AfxMessageBox(_T("Documents为空!"), MB_OK|MB_ICONWARNING);  
        return FALSE;  
    }  
  
    COleVariant vTrue((short)TRUE),      
                vFalse((short)FALSE),  
                vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR),  
                vZ((short)0);  
    COleVariant vFileName(fileName);  
      
	
	//得到document变量  
	//m_wdDoc.AttachDispatch(m_wdDocs.Add(vFileName, vOptional, vOptional, vOptional)) ;                    // Close AttachDispatch  

    //得到document变量  
    m_wdDoc.AttachDispatch(m_wdDocs.Open(  
                                vFileName,        // FileName  
                                vTrue,            // Confirm Conversion.  
                                vFalse,            // ReadOnly.  
                                vFalse,            // AddToRecentFiles.  
                                vOptional,        // PasswordDocument.  
                                vOptional,        // PasswordTemplate.  
                                vOptional,        // Revert.  
                                vOptional,        // WritePasswordDocument.  
                                vOptional,        // WritePasswordTemplate.  
                                vOptional,        // Format. // Last argument for Word 97  
                                vOptional,        // Encoding // New for Word 2000/2002  
                                vOptional,        // Visible  
                                //如下4个是word2003需要的参数。本版本是word2000。  
                                vOptional,    // OpenAndRepair  
                                vZ,            // DocumentDirection wdDocumentDirection LeftToRight  
                                vOptional,    // NoEncodingDialog  
                                vOptional  
                                  
                                )                // Close Open parameters  
                            );                    // Close AttachDispatch  
      
    if (!m_wdDoc.m_lpDispatch)   
    {  
        AfxMessageBox(_T("Document获取失败!"), MB_OK|MB_ICONWARNING);  
        return FALSE;  
    }  
    //得到selection变量  
    m_wdSel = m_wdApp.GetSelection();  
    if (!m_wdSel.m_lpDispatch)   
    {  
        AfxMessageBox(_T("Select获取失败!"), MB_OK|MB_ICONWARNING);  
        return FALSE;  
    }  
    //得到全部DOC的Range变量  
    m_wdRange = m_wdDoc.Range(vOptional,vOptional);  
    if(!m_wdRange.m_lpDispatch)  
    {  
        AfxMessageBox(_T("Range获取失败!"), MB_OK|MB_ICONWARNING);  
        return FALSE;  
    }  
    return TRUE;  
}