打印文档控制三则
1、修改打印文档的名称
2、获取打印列队的个数
3、控制打印文档的状态
*-- 说明:我们在用VFP写的程序中需要打印时,WINDOWS的系统打印管理器里会有打印队列, * 并显示文档名:Visual Foxpro,那么下面这个功能可以帮助我们实现修改 *-- 设置打印改名资源文件 set library to chgname.fll *-- 得到当前默认的打印机名称 prtname=set("printer",2) *-- 修改文档名称 chgprtname(prtname,"Visual FoxPro","我的打印文档") *-- 使用语法: * ChgPrtName(cPrinterName, cOldPrintedDocumentName, cNewPrintedDocumentName) *-- 返回: * 0 成功修改 * -1 没有发现给出的打印机名称 * -2 在队列里的文档发生内部错误 * 注: 如果没有文档在打印队列,则返回 0 * -3 修改打印文档时发生内部错误 * -5 处理时内存不够
其他说明: 你可以使用函数APrinters()获得打印机名称存入变量 cPrinterName 中 或者用命令 SET("PRINTER",2) 得到当前默认打印机名称 举例: ChgPrtName("EPSON LQ-1600K","Visual FoxPro","我的文档名称") 将打印机 EPSON LQ-1600K 上将打印文件名称为 Visual FoxPro 改为 我的文档名称 注意: ChgPrtName 将改变所有的同样的打印名称改为自己定义的名称,判断条件采用不精确匹配 比如将名称为 ABC 的文档,只要为A或为AB、ABC都等同与ABC
2、获取打印列队的个数
*-- 说明:获取打印队列的个数 *-- 语法:GetPrtDocs(cPrinterName) *-- 返回: * >0 一个大于0的数,即打印队列里的任务数 * -1 没有发现给出的打印机名称 * -2 在队列里的文档发生内部错误 * 注:如果没有打印文档在队列里,返回0 * -5 处理时内存不够
(在 WinNT 服务器上,如果打印队列包含有大于100个文档,将可以产生一些错误) 举例: GetPrtDocs("EPSON LQ-1600K") && 将得到该打印机上等待打印的队列个数
3、控制打印文档的状态
*-- 说明:设置打印文档的状态, * 你可以暂停,取消,重新开始,中断一个或多个打印任务 * 给出的文档名称必须和打印管理器里的一致 * 语法:SetPrtDocState(cPrinterName, cDocumentName, nCommand) *-- 参数说明: * 暂停 1 * 中断 2 * 取消 3 * 重新开始 4 *-- 返回: * 0= 命令正常执行 * -1 没有发现给出的打印机名称 * -2 在队列里的文档发生内部错误 * 注:如果没有打印文档在队列里,返回0 * -5 处理时内存不够 * -6 参数不支持
举例: 现在你想在打印机Epson Lq1600K上,暂停名为“我的文档”的打印任务 执行命令: SetPrtDocState("EPSON LQ-1600K","我的文档",1) 提醒1: 运行这个FLL文件,你必须有MSVCRT.DLL文件在系统上 如果你没有这个文件,在加载FLL文件时,你将被提示“Invalid or corrupted Libary”的错误信息。 你可以将该文件复制到你的系统目录,一般装有VFP的系统上都会有该文件的。 提醒2: 你可以在运行报表时就开始修改打印文档的名称,在报表的第一页就开始修改,书写如下报表控件域: iif(_PAGENO=1,iif(chgprtname(...)=0,"",""),"") 提醒3: 注册该FLL文件 E-mail: bodecsb@mail.matav.hu or officeline@mail.matav.hu Phone: +36 30 9 443 113 or +36 30 9 912 050下载软件包 chgnage.zip 8.6K