描述:
启动WORD进程后,能在隐藏主窗口的形式下调用PrintOut方法吗?
我试了,但是不行,是不是还有什么特别的设置?
只有这样才能正常打印
Application app;
Documents docs;
_Document doc;
app.CreateDispatch();省略参数
docs = app.GetDocuments();
doc = docs.open();
app.SetVisible(true);(只有设成true才能正常调用printout()方法)
为什么?我想隐藏,请问有别的方法吗?
解决方案1:
#include "stdafx.h"
#import "E:\Program Files\Microsoft Office\Office10\MSWORD.OLB" named_guids raw_interfaces_only rename("ExitWindows", "wordExitWindows")
void wordprint()
{
Word::_ApplicationPtr app;
app.CreateInstance("Word.Application");
Word::DocumentsPtr docs;
app->get_Documents(&docs);
Word::_DocumentPtr doc;
_variant_t vFileName("c:\\a.doc");
_variant_t vOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
_variant_t vTrue(VARIANT_TRUE);
_variant_t vFalse(VARIANT_FALSE);
docs->Open (
/*[in]*/&vFileName,
/*[in] VARIANT * ConfirmConversions*/&vOptional,
/*[in] VARIANT * ReadOnly*/&vOptional,
/*[in] VARIANT * AddToRecentFiles*/&vOptional,
/*[in] VARIANT * PasswordDocument*/&vOptional,
/*[in] VARIANT * PasswordTemplate*/&vOptional,
/*[in] VARIANT * Revert*/&vOptional,
/*[in] VARIANT * WritePasswordDocument*/&vOptional,
/*[in] VARIANT * WritePasswordTemplate*/&vOptional,
/*[in] VARIANT * Format*/&vOptional,
/*[in] VARIANT * Encoding*/&vOptional,
/*[in] VARIANT * Visible*/&vOptional,
/*[in] VARIANT * OpenAndRepair*/&vOptional,
/*[in] VARIANT * DocumentDirection*/&vOptional,
/*[in] VARIANT * NoEncodingDialog*/&vOptional,
/*[out,retval]*/ &doc );
_variant_t vCopies((short)1);
app->PrintOut (
/*[in] VARIANT * Background = &vtMissing*/ &vTrue ,
/*[in] VARIANT * Append = &vtMissing*/&vOptional ,
/*[in] VARIANT * Range = &vtMissing*/ &vOptional ,
/*[in] VARIANT * OutputFileName = &vtMissing*/&vOptional ,
/*[in] VARIANT * From = &vtMissing*/ &vOptional,
/*[in] VARIANT * To = &vtMissing*/ &vOptional,
/*[in] VARIANT * Item = &vtMissing*/ &vOptional,
/*[in] VARIANT * Copies = &vtMissing*/&vCopies ,
/*[in] VARIANT * Pages = &vtMissing*/ &vOptional,
/*[in] VARIANT * PageType = &vtMissing*/&vOptional ,
/*[in] VARIANT * PrintToFile = &vtMissing*/ &vFalse,
/*[in] VARIANT * Collate = &vtMissing*/ &vOptional,
/*[in] VARIANT * FileName = &vtMissing*/ &vOptional,
/*[in] VARIANT * ActivePrinterMacGX = &vtMissing*/ &vOptional,
/*[in] VARIANT * ManualDuplexPrint = &vtMissing*/&vOptional ,
/*[in] VARIANT * PrintZoomColumn = &vtMissing*/ &vOptional,
/*[in] VARIANT * PrintZoomRow = &vtMissing*/ &vOptional,
/*[in] VARIANT * PrintZoomPaperWidth = &vtMissing*/ &vOptional,
/*[in] VARIANT * PrintZoomPaperHeight = &vtMissing*/ &vOptional) ;
Sleep(3000);
app->Quit(&vOptional,&vOptional,&vOptional);
}
int _tmain(int argc, _TCHAR* argv[])
{
printf("Automate word to print a document, test by masterz with VC.NET2003 on WindowXP, OfficeXP\n");
CoInitialize(NULL);
wordprint();
CoUninitialize();
return 0;
}