检测打印机状态(VB实现)

合集下载

C#获取打印机状态+API函数详解

C#获取打印机状态+API函数详解

using System;using ;using ;using ;using ;using ;using ;using testprinter2{public partial class Form1 : Form{#region预定义类型[FlagsAttribute]public enum PrinterEnumFlags{PRINTER_ENUM_DEFAULT = 0x00000001,PRINTER_ENUM_LOCAL = 0x00000002,PRINTER_ENUM_CONNECTIONS = 0x00000004, PRINTER_ENUM_FAVORITE = 0x00000004,PRINTER_ENUM_NAME = 0x00000008,PRINTER_ENUM_REMOTE = 0x00000010,PRINTER_ENUM_SHARED = 0x00000020,PRINTER_ENUM_NETWORK = 0x00000040,PRINTER_ENUM_EXPAND = 0x00004000,PRINTER_ENUM_CONTAINER = 0x00008000, PRINTER_ENUM_ICONMASK = 0x00ff0000, PRINTER_ENUM_ICON1 = 0x00010000,PRINTER_ENUM_ICON2 = 0x00020000,PRINTER_ENUM_ICON3 = 0x00040000,PRINTER_ENUM_ICON4 = 0x00080000,PRINTER_ENUM_ICON5 = 0x00100000,PRINTER_ENUM_ICON6 = 0x00200000,PRINTER_ENUM_ICON7 = 0x00400000,PRINTER_ENUM_ICON8 = 0x00800000,PRINTER_ENUM_HIDE = 0x01000000}[StructLayout]public struct PRINTER_INFO_2{[MarshalAs]public string pServerName;[MarshalAs]public string pPrinterName;[MarshalAs]public string pShareName;[MarshalAs]public string pPortName;[MarshalAs]public string pDriverName;[MarshalAs]public string pComment;[MarshalAs]public string pLocation;public IntPtr pDevMode;[MarshalAs]public string pSepFile;[MarshalAs]public string pPrintProcessor;[MarshalAs]public string pDatatype;[MarshalAs]public string pParameters;public IntPtr pSecurityDescriptor;public uint Attributes;public uint Priority;public uint DefaultPriority;public uint StartTime;public uint UntilTime;public uint Status;public uint cJobs;public uint AveragePPM;}#endregion#region引用 WindowsAPIPrinterName + " 驱动为: " + Info2[i].pDriverName);"");}(pAddr);}DriverName, "有", 0);}}of bytes copied (or required)LPDWORD pcReturned of printer info. structures copied);这个API用于了解可用的打印机的信息参数的意义是:Flags:可以是PRINTER_ENUM_LOCAL, PRINTER_ENUM_NAME, PRINTER_ENUM_SHARED, PRINTER_ENUM_DEFAULT,PRINTER_ENUM_CONNECTIONS等或者某些合法的组合Name:与Flag相关的名字, 例如, 服务器名, 域名等Level:您希望返回的结构类型, 95可以用1, 2, 5, NT可以用1, 2, 4, 5分别代表PRINTER_INFO_1,PRINTER_INFO_2,PRINTER_INFO_4,PRINTER_INFO_5各个结构的不同点是返回信息的详尽程度或者用途不同pPrinterEnum:您提供的一个接受返回结果的缓冲区cbBuf:这个缓冲区的大小(in Bytes)pcbNeeded:您提供的空间, API调用返回时, 将告诉您用了pPrinterEnum多少字节(成功时), 或者需要多少字节(如果空间不够)pcReturned:您提供的空间, API调用返回时, 将告诉您到底返回了多少个level中要求的结构EnumPrinters返回非零值表示调用成功.EnumPrintersEnumPrintersVB声明Declare Function EnumPrinters Lib "" Alias "EnumPrintersA" (ByVal flags As Long, ByVal name As String, ByVal Level As Long, pPrinterEnum As Byte, ByVal cdBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long说明枚举系统中安装的打印机返回值Long,非零表示成功,零表示失败。

VC打印机编程之两篇有用的文章获取打印机与打印作业的状态和设置打印机模式并预览打印

VC打印机编程之两篇有用的文章获取打印机与打印作业的状态和设置打印机模式并预览打印

VC打印机编程之两篇有用的文章获取打印机与打印作业的状态和设置打印机模式并预览打印VC打印机编程之两篇有用的文章vc设置打印机模式并预览打印调用打印属性对话框:if(::OpenPrinter('Adobe PDF', &hPrint, NULL)){::PrinterProperties(m_hWnd, hPrint);::ClosePrinter(hPrint);}注:通过EnumPrinters可以枚举全部的本地、网络打印机信息,通过指定以上的方法,可以打开打印机属性对话框,建议通过以上方法修改打印机固定属性,比较安全。

枚举打印机需要调用两次EnumPrinters函数,第一次的到结构体的大小,第二次得到打印机列表DWORD dwNeeded, dwReturn;// 得到结构大小BOOL bl = ::EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS, NULL, 4, NULL, 0,&dwNeeded, &dwReturn);// 得到打印机设备列表PRINTER_INFO_4* p4;p4 = (PRINTER_INFO_4*)malloc(dwNeeded);::EnumPrinters(PRINTER_ENUM_LOCAL |PRINTER_ENUM_CONNECTIONS, NULL, 4, (PBYTE)p4, dwNeeded,&dwNeeded, &dwReturn);for(int i=0;i< div> < dwNeeded;i++){TRACE('This is printer name : %s\r\n', p4[i].pPrinterName);}// 注意以上代码,NT以上系统支持,98不支持最简单的一段打印程序流程:1、得到默认打印机名称(如果你不打算更改打印机的话,就不需要保存该选项)2、保存默认打印机名称3、设定新的默认打印机4、取得默认打印机的选项5、修改属性,如纸张选择,横纵等。

VB API函数大全

VB API函数大全

WINDOWS VC VB API函数大全1. API之网络函数WNetAddConnection 创建同一个网络资源的永久性连接WNetAddConnection2 创建同一个网络资源的连接WNetAddConnection3 创建同一个网络资源的连接WNetCancelConnection 结束一个网络连接WNetCancelConnection2 结束一个网络连接WNetCloseEnum 结束一次枚举操作WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接WNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接WNetEnumResource 枚举网络资源WNetGetConnection 获取本地或已连接的一个资源的网络名称WNetGetLastError 获取网络错误的扩展错误信息WNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称WNetGetUser 获取一个网络资源用以连接的名字WNetOpenEnum 启动对网络资源进行枚举的过程2. API之消息函数BroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置GetMessageTime 取得消息队列中上一条消息处理完毕时的时间PostMessage 将一条消息投递到指定窗口的消息队列PostThreadMessage 将一条消息投递给应用程序RegisterWindowMessage 获取分配给一个字串标识符的消息编号ReplyMessage 答复一个消息SendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口SendMessageCallback 将一条消息发给窗口SendMessageTimeout 向窗口发送一条消息SendNotifyMessage 向窗口发送一条消息3. API之文件处理函数CloseHandle 关闭一个内核对象。

vb 打印 实例-概述说明以及解释

vb 打印 实例-概述说明以及解释

vb 打印实例-概述说明以及解释1.引言1.1 概述在VB中,打印是一项常见的功能需求,通过打印可以将软件中的数据输出到纸张上,使得用户能够方便地查看和保存信息。

本文将介绍VB 中的打印功能,并通过实例演示和分析来帮助读者更好地理解和应用这一功能。

在VB中,打印功能的实现主要通过使用PrintDocument组件来完成,PrintDocument组件可以方便地控制打印输出的内容和样式。

通过设置PrintDocument的PageSettings属性和PrintPage事件来指定打印页面的设置和内容。

另外,也可以使用PrintPreviewDialog组件来提供打印预览的功能,使得用户可以在打印前预览输出的效果,从而调整需要打印的内容和格式。

本文将通过实例演示和分析来介绍如何在VB中实现打印功能,希望能帮助读者更加深入地了解和掌握这一重要的功能。

文章结构部分主要包括文章的大致组织和内容安排,旨在帮助读者更好地理解整篇文章的逻辑结构。

本文的文章结构如下:1. 引言1.1 概述:介绍VB打印功能的重要性和应用背景1.2 文章结构:介绍本文的大纲和各部分内容安排1.3 目的:阐明撰写本文的意义和目的2. 正文2.1 VB打印功能介绍:详细介绍VB语言中的打印功能的基本原理和特点2.2 VB打印实例演示:通过具体的实例演示,展示VB打印功能的具体应用和使用方法2.3 VB打印实例分析:对演示的实例进行分析和总结,深入探讨其应用场景和优势特点3. 结论3.1 总结:对整篇文章进行总结,强调VB打印功能的重要性和价值3.2 应用推广:探讨VB打印功能在实际应用中的推广和发展前景3.3 展望:展望未来VB打印功能的发展方向和潜力通过以上结构,读者可以清晰地了解本文的逻辑结构和内容安排,有助于他们更好地理解和消化文章所传达的信息。

1.3 目的:本文的目的在于介绍如何在VB(Visual Basic)中使用打印功能,并通过实例演示和分析,帮助读者更好地了解如何在自己的程序中实现打印功能。

利用SDK编写VB程序实现考勤状态智能感知

利用SDK编写VB程序实现考勤状态智能感知
Ab s t r a c t :T h i s p a p e r i n t r o d u c e s t h e d e s i g n o f a VB p r o g r a m wh i c h a u t o ma i t c a l l y r e a d s he t a t t e n d a n c e d a t a f r o m a t t e n d a n c e ma c h i n e s a n d a u t o ma t i c a l l y s e n t s t o a t t e n d a n c e p e o p l e t o c h e c k t h r o u g h f u n c t i o n c a l l s o f S DK a n d R TX S e r v e r S DK t o r e a 1 . i z e i n t e l l i g e n t p e r c e o p t i o n o f a t t e n d a n c e s t a t u s .研 l e n p r o g r a m c h ng a e s s l i g h t l y . i t c a n r e li a z e t h e f u n c t i o n o f d i s t r i b u t i n g a t — t e n d a n c e s t a t f s t i c s t o t h e a t t e n d a n c e ma n a g e me n t a t r e g u l a r t i me , i t h a s a p o s i t i v e e f e c t t o s t r e n g t h e n t h e s c h o o l a t t e n d a n c e ma n a g e me n t a n d i mp ov r e w o r k e i f %i e n c y .

VB打印功能全代码

VB打印功能全代码

VB打印功能全代码Private Sub Image5_Click() '打印报表Dim i As IntegerDim pageleft As IntegerDim pageheader As IntegerDim pagefooter As IntegerDim pageright As IntegerDim startx As IntegerDim starty As IntegerDim startline As IntegerDim endline As IntegerDim usewidth As IntegerDim useheight As Integer pageheader = 25pagefooter = 25pageleft = 20pageright = 20'定义纸张类型A4Printer.FontSize = 20Printer.PaperSize = 9Printer.ScaleMode = 6Printer.FontBold = FalsePrinter.ScaleLeft = -20Printer.ScaleTop = -25Printer.ScaleWidth = 210Printer.ScaleHeight = 297 usewidth = Printer.ScaleWidth - 40 useheight = Printer.ScaleHeight - 50Printer.CurrentX = 0Printer.CurrentY = 0Printer.DrawWidth = 2'打印主标题Printer.FontSize = 20Printer.CurrentX = (usewidth - Printer.TextWidth(Me.T ext1 .Text & "经济情况表")) / 2Printer.CurrentY = Printer.ScaleT opPrinter.Print Me.Text1.Text & "经济情况表"'打印空白行Printer.FontSize = 8Printer.CurrentX = (usewidth - Printer.TextWidth("")) / 2 Printer.CurrentY = Printer.CurrentY + 1Printer.Print ""'打印副标题Printer.FontSize = 15Printer.CurrentX = (usewidth - Printer.TextWidth(common th & "月份经济情况报表")) / 2Printer.CurrentY = Printer.CurrentY + 1Printer.Print commonth & "月份经济情况报表"'打印空白行Printer.FontSize = 8Printer.CurrentX = (usewidth - Printer.TextWidth("")) / 2 Printer.CurrentY = Printer.CurrentY + 1Printer.Print ""'打印表的内容'首先打印第一条横线'打印最上边的第一条横线Printer.CurrentX = pageleft + Printer.ScaleLeftstartline = Printer.CurrentY + 1Printer.Line -((Printer.ScaleLeft + Printer.ScaleWidth - pageleft), Printer.Cur rentY)Printer.FontSize = 12Printer.CurrentY = Printer.CurrentY + 1starty = Printer.CurrentYPrinter.CurrentX = ((Printer.ScaleWidth - 40) / 3 - Printe r.TextWidth("")) / 2Printer.Print ""Printer.FontSize = 12Printer.CurrentX = usewidth / 3 + ((usewidth / 3 - Prin ter.TextWidth("今年经济情况")) / 2)Printer.CurrentY = startyPrinter.Print "今年经济情况(万元)"Printer.FontSize = 12Printer.CurrentX = (usewidth / 3) * 2 + ((usewidth / 3 - Printer.TextWidth("去年经济情况")) / 2)Printer.CurrentY = startyPrinter.Print "去年经济情况(万元)"Printer.CurrentX = pageleft + Printer.ScaleLeftPrinter.CurrentY = Printer.CurrentY + 1Printer.Line -((Printer.ScaleLeft + Printer.ScaleWidth - pageleft), Printer.Cur rentY)Printer.CurrentY = Printer.CurrentY + 1For i = 0 To 10'判断是否该页已打满Me.MSFlexGrid1.Row = iIf Printer.CurrentY >= useheight Then'打印横线Printer.CurrentX = Printer.ScaleLeft + pageleftPrinter.Line -((Printer.ScaleLeft + Printer.ScaleWidth - pageleft), Printer.Cur rentY)Printer.CurrentY = Printer.CurrentY + 1'打印四条竖线endline = Printer.CurrentYPrinter.Line (0, startline)-(0, endline)Printer.Line (usewidth / 3, startline)-(usewidth / 3, endline)Printer.Line ((usewidth / 3) * 2, startline)-((usewidth / 3) * 2, endline)Printer.Line (usewidth, startline)-(usewidth, endline)'打印页号Printer.CurrentX = (Printer.ScaleWidth - Printer.TextWidth( Printer.Page)) / 3 - pageleftPrinter.CurrentY = useheight + 3Printer.Print Printer.PagePrinter.NewPage 'NewPage告诉打印机,程序对当前输出页的发送已经结束。

2C#获取打印机状态 API函数详解

2C#获取打印机状态 API函数详解
IntPtr pAddr = Marshal.AllocHGlobal((int)cbNeeded); ret = EnumPrinters(PrinterEnumFlags.PRINTER_ENUM_LOCAL, null, 2,
pAddr, cbNeeded, ref cbNeeded, ref cReturned);
#region 预定义类型
[FlagsAttribute] public enum PrinterEnumFlags {
PRINTER_ENUM_DEFAULT = 0x00000001, PRINTER_ENUM_LOCAL = 0x00000002, PRINTER_ENUM_CONNECTIONS = 0x00000004, PRINTER_ENUM_FAVORITE = 0x00000004, PRINTER_ENUM_NAME = 0x00000008, PRINTER_ENUM_REMOTE = 0x00000010, PRINTER_ENUM_SHARED = 0x00000020, PRINTER_ENUM_NETWORK = 0x00000040, PRINTER_ENUM_EXPAND = 0x00004000, PRINTER_ENUM_CONTAINER = 0x00008000, PRINTER_ENUM_ICONMASK = 0x00ff0000, PRINTER_ENUM_ICON1 = 0x00010000, PRINTER_ENUM_ICON2 = 0x00020000, PRINTER_ENUM_ICON3 = 0x00040000, PRINTER_ENUM_ICON4 = 0x00080000, PRINTER_ENUM_ICON5 = 0x00100000,

获取打印机状态信息

获取打印机状态信息

1、获取打印机状态信息下面的代码可以判断所选打印机是否支持双面打印。

如返回值为1,则表示支持双面打印,返回值为0则表示不支持。

DeviceCapabilitiesA(Device,Port,DC_DVPLEX,nil,nil);下面的代码可以获得一个打印机最多能复制的份数:DeviceCapabilitiesA(Device,Port,DC_COPIES,nil,nil);使用GetDeviceCaps()函数确定所选设备的特定属性。

在某些情况下,GetDeviceCaps()将返回所需要的值。

下面的代码以毫米为单位返回打印机设备的宽度:GetDeviceCaps(Printer.Handle,HORISIZE);在另一些情况下,GetDeviceCaps()返回一个整数,这个整数经过位屏蔽可以获得打印机的某一性能。

例如,GetDeviceCaps()方法返回这样的整型值:RCaps:=GetDeviceCaps(Printer.Handle,RASTERCAPS);然后,通过AND运算符屏蔽出RC_BANDING字段,进而确定打印机是否支持分段打印技术。

(RCapsandRC_BANDING)=RC_BANDING***************获取打印机状态信息varpinfo: pPRINTERINFO2;pprt,a: Cardinal;b:PDWORD;beginb:=allocmem(256);pinfo:=AllocMem(1000);if OpenPrinter('HP DJ 200',pprt,nil) thenbegina:=1000;if getprinter(pprt,2,pinfo,a,b) thenshowmessage(pinfo.pPrinterName+' ststus:'+inttostr(pinfo.Status)); ClosePrinter(pprt);end;freemem(b);freemem(pinfo);end;PRINTER_INFO_2.Status :Windows NT:PRINTER_STATUS_PAUSEDPRINTER_STATUS_PENDING_DELETIONWindows 95:PRINTER_STATUS_BUSYPRINTER_STATUS_DOOR_OPENPRINTER_STATUS_ERRORPRINTER_STATUS_INITIALIZINGPRINTER_STATUS_IO_ACTIVEPRINTER_STATUS_MANUAL_FEEDPRINTER_STATUS_NO_TONERPRINTER_STATUS_NOT_AVAILABLEPRINTER_STATUS_OFFLINEPRINTER_STATUS_OUT_OF_MEMORYPRINTER_STATUS_OUTPUT_BIN_FULLPRINTER_STATUS_PAGE_PUNTPRINTER_STATUS_PAPER_JAMPRINTER_STATUS_PAPER_OUTPRINTER_STATUS_PAPER_PROBLEMPRINTER_STATUS_PAUSEDPRINTER_STATUS_PENDING_DELETIONPRINTER_STATUS_PRINTINGPRINTER_STATUS_PROCESSINGPRINTER_STATUS_TONER_LOWPRINTER_STATUS_UNAVAILABLEPRINTER_STATUS_USER_INTERVENTIONPRINTER_STATUS_WAITINGPRINTER_STATUS_WARMING_UP2、读取打印机状态可用CREATEFILE以PRN为文件名生成一个文件,检测返回值,若成功则打印机可用,否则显示打印机故障。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Option ExplicitDeclare Function MapPhysToLin Lib "WinIo.dll" (ByVal PhysAddr As Long, ByVal PhysSize As Long, ByRef PhysMemHandle) As LongDeclare Function UnmapPhysicalMemory Lib "WinIo.dll" (ByVal PhysMemHandle, ByVal LinAddr) As BooleanDeclare Function GetPhysLong Lib "WinIo.dll" (ByVal PhysAddr As Long, ByRef PhysVal As Long) As BooleanDeclare Function SetPhysLong Lib "WinIo.dll" (ByVal PhysAddr As Long, ByVal PhysVal As Long) As BooleanDeclare Function GetPortV al Lib "WinIo.dll" (ByVal PortAddr As Integer, ByRef PortVal As Long, ByVal bSize As Byte) As BooleanDeclare Function SetPortVal Lib "WinIo.dll" (ByVal PortAddr As Integer, ByVal PortVal As Long, ByVal bSize As Byte) As BooleanDeclare Function InitializeWinIo Lib "WinIo.dll" () As BooleanDeclare Function ShutdownWinIo Lib "WinIo.dll" () As BooleanDeclare Function InstallWinIoDriver Lib "WinIo.dll" (ByVal DriverPath As String, ByVal Mode As Integer) As BooleanDeclare Function RemoveWinIoDriver Lib "WinIo.dll" () As BooleanPublic IOStat As Boolean'************************************************************'* 函数名称:GetPrnStat *'* 功能:根据打印机的内存地址,检测打印机的目前工作状态*'* 参数:lptport: 要检测的打印机的端口号,如LPT1: *'* 返回值:打印机的工作状态值。

*'* 0:正常1:缺纸2:无联系3:异常(其他错误) *'* 调用:本模块中的API函数InitializeWinIo和GetPortVal *'* 备注:检测的内存地址,是在打印端口所在的基地址上加1;*'* 作者:谷霖*'* LPT1口的基地址为&H378;LPT2口的基地址为&H278 *'************************************************************Public Function GetPrnStat(ByVal LptPort As String) As LongDim PrnAddr As LongOn Error Resume NextIf IOStat = False Then IOStat = InitializeWinIo()If IOStat ThenIf UCase(LptPort) = "LPT1:" ThenPrnAddr = &H379ElseIf UCase(LptPort) = "LPT2:" ThenPrnAddr = &H279End IfGetPortVal PrnAddr, GetPrnStat, 1ElseGetPrnStat = &HFFGetPrnStat = GetPrnStat And &HF8Select Case GetPrnStatCase &H68, &H58, &H70GetPrnStat = 1 '缺纸Case &H78GetPrnStat = 2 '无联系Case &HD8GetPrnStat = 0 '正常Case ElseGetPrnStat = 3 '异常End SelectEnd Function'************************************************************************* '* 函数功能:检查打印机的状态主函数* '* 输入参数:PrintName 要检测的打印机名称* '* 输出参数:checkprinterr * '* 检查结果(0:正常1:打印机缺纸2:打印机无联系3:打印机异常* '* 4:没有安装打印机5:打印机名称错误) * '************************************************************************* Public Function CheckPrintErr(ByVal PrintName As String) As Long'CheckPrintErr参数说明'0:没有错误'1:打印机无联系'2:打印机缺纸'3:没有安装打印机Dim printjieguo As LongDim i As Long, k As LongOn Error GoTo ErrCheckPrintIf Printers.Count = 0 ThenCheckPrintErr = 4 '没有安装打印机Exit FunctionEnd If'检测发票打印机是否可以联系For i = 0 To Printers.Count - 1If (Printers(i).DeviceName = PrintName) Thenk = k + 1Exit ForEnd IfNextIf k = 0 Then '打印机名称错误CheckPrintErr = 5Exit FunctionEnd IfSet Printer = Printers(i)CheckPrintErr = GetPrnStat(Printer.Port)Exit FunctionErrCheckPrint:CheckPrintErr = 3Exit FunctionEnd Function----------------------------------------------------------------------3号答案:编写VB打印控制程序的几点心得Visual Basic(VB)给用户提供了可视化编程环境,因其简单易学、功能强大而得到了广泛的应用。

VB提供了两种实现打印的方法。

一般在对打印质量要求不高的场合,或者是编程项目的早期开发过程中,可以直接使用VB窗体的Printform方法实现打印。

用这种方法实现打印具有编程简单、易用并且功能强大的优点,它只需要通过一行代码,几乎能打印所有内容。

实现的方法就是:首先将要打印的内容在屏幕上显示出来,然后开发人员只要为窗体对象激活PrintForm ,窗体则自动将要打印的内容发送到Printer对象上,其语法格式如下:[窗体.]PrintForm 。

如果窗体中包括图形,那么打印前应先置窗体的AutoRedraw属性为真。

这种方法虽然简单,但是它却存在着内存消耗大、打印粗糙、速度慢等缺陷,尤其对于带有滚动条的图像,这种方法只能打印当前可视的区域。

在实际应用中经常会遇到对打印质量要求很高的场合,例如打印音乐五线谱,对打印的美观、清晰度以及音符符头的位置都有很严格的要求,这种应用场合若采用VB提供的另一种基于Printer对象的打印方法则可以获得高分辨率的打印,得到很高的打印质量。

在实际应用中,也可以根据实际应用情况将上述两种方法结合起来使用,即:前期工作使用PrintForm 简单的打印方法将窗体的布局定下来,后期再使用基于Printer对象的打印方法实现最终的打印工作。

2.高分辨率打印程序开发心得⑴Printer对象VB的打印可以使用Printer对象。

Printer对象是一个独立于打印机设备的封装,它可以代表不同的打印机,初始时,Printer对象为系统缺省的打印机,也可以使用下列语句:Set Printer=Printers(2) (其中2代表Printers集中的第二个打印机)对打印机进行指定。

Printer对象具备例如:ColorMode、Copies、Duplex、Printquality等控制打印机特征的属性,提供了Newpage、EndDoc、KillDoc等控制打印过程的方法,以及大多数由窗体和图片框控件提供的图形属性和方法如:Currentx、Currenty、Textwidth、Textheight、Print、Pset、Line、PaintPicture和Circle等方法,它还拥有Font的所有属性。

实现高分辨率的打印就是通过控制Printer对象的上述属性和方法完成的。

⑵直接利用Windows公用标准对话框CommonDialog控件【打印】VB为用户提供了Windows公用标准对话框CommonDialog控件:【打开】、【文件另存为】、【颜色】、【字体】、【打印】。

CommonDialog控件在Visual Basic 和Microsoft Windows动态连接库Commdlg.dll 例程之间提供了接口。

利用公用标准对话框【打印】开发VB的打印程序,将大大缩短程序的开发周期。

应用程序中要使用公用对话框,必须首先在工具箱中添加公用对话框控件。

该动作通过激活【部件】对话框,选中Microsoft Common Dialog Control6.0, 单击【确定】即可。

相关文档
最新文档