请问,怎样使用GetPrinter()函数获得打印机的状态? 谢谢!!
我用的OS是Windows 2000专业版
我想使用下面的方法获得打印机状态,可是GetPrinter()函数不会用
Private Enum Printer_Status
PRINTER_STATUS_READY = &H0
PRINTER_STATUS_PAUSED = &H1
PRINTER_STATUS_ERROR = &H2
PRINTER_STATUS_PENDING_DELETION = &H4
PRINTER_STATUS_PAPER_JAM = &H8
PRINTER_STATUS_PAPER_OUT = &H10
PRINTER_STATUS_MANUAL_FEED = &H20
PRINTER_STATUS_PAPER_PROBLEM = &H40
PRINTER_STATUS_OFFLINE = &H80
PRINTER_STATUS_IO_ACTIVE = &H100
PRINTER_STATUS_BUSY = &H200
PRINTER_STATUS_PRINTING = &H400
PRINTER_STATUS_OUTPUT_BIN_FULL = &H800
PRINTER_STATUS_NOT_AVAILABLE = &H1000
PRINTER_STATUS_WAITING = &H2000
PRINTER_STATUS_PROCESSING = &H4000
PRINTER_STATUS_INITIALIZING = &H8000
PRINTER_STATUS_WARMING_UP = &H10000
PRINTER_STATUS_TONER_LOW = &H20000
PRINTER_STATUS_NO_TONER = &H40000
PRINTER_STATUS_PAGE_PUNT = &H80000
PRINTER_STATUS_USER_INTERVENTION = &H100000
PRINTER_STATUS_OUT_OF_MEMORY = &H200000
PRINTER_STATUS_DOOR_OPEN = &H400000
PRINTER_STATUS_SERVER_UNKNOWN = &H800000
PRINTER_STATUS_POWER_SAVE = &H1000000
End Enum
Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, ByVal pDefault As Long) As Long
Private Declare Function GetPrinter Lib "winspool.drv" Alias "GetPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, buffer As Long, ByVal pbSize As Long, pbSizeNeeded As Long) As Long
Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Private Sub Command1_Click()
MsgBox IsPrinterReady(Printer.DeviceName)
End Sub
Private Function IsPrinterReady(ByVal strDeviceName As String) As Boolean
Dim hPrinter As Long, lret As Long, SizeNeeded As Long
Dim buffer(1000) as long
lret = OpenPrinter(Printer.DeviceName, hPrinter, 0&)
lret = GetPrinter(hPrinter, 7, buffer(0), 1000, SizeNeeded) '返回值总=0(调用失败)
ClosePrinter hPrinter
IsPrinterReady = (buffer(0) = Printer_Status.PRINTER_STATUS_READY)
End Function
返回值总=0(调用失败),而且buffer(0)也总 = 0 没有获得打印机状态,是参数不正确吗??
第2个参数从1—7我都试过了
小弟跪谢~~~~! 急盼~~~~~
我想使用下面的方法获得打印机状态,可是GetPrinter()函数不会用
Private Enum Printer_Status
PRINTER_STATUS_READY = &H0
PRINTER_STATUS_PAUSED = &H1
PRINTER_STATUS_ERROR = &H2
PRINTER_STATUS_PENDING_DELETION = &H4
PRINTER_STATUS_PAPER_JAM = &H8
PRINTER_STATUS_PAPER_OUT = &H10
PRINTER_STATUS_MANUAL_FEED = &H20
PRINTER_STATUS_PAPER_PROBLEM = &H40
PRINTER_STATUS_OFFLINE = &H80
PRINTER_STATUS_IO_ACTIVE = &H100
PRINTER_STATUS_BUSY = &H200
PRINTER_STATUS_PRINTING = &H400
PRINTER_STATUS_OUTPUT_BIN_FULL = &H800
PRINTER_STATUS_NOT_AVAILABLE = &H1000
PRINTER_STATUS_WAITING = &H2000
PRINTER_STATUS_PROCESSING = &H4000
PRINTER_STATUS_INITIALIZING = &H8000
PRINTER_STATUS_WARMING_UP = &H10000
PRINTER_STATUS_TONER_LOW = &H20000
PRINTER_STATUS_NO_TONER = &H40000
PRINTER_STATUS_PAGE_PUNT = &H80000
PRINTER_STATUS_USER_INTERVENTION = &H100000
PRINTER_STATUS_OUT_OF_MEMORY = &H200000
PRINTER_STATUS_DOOR_OPEN = &H400000
PRINTER_STATUS_SERVER_UNKNOWN = &H800000
PRINTER_STATUS_POWER_SAVE = &H1000000
End Enum
Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, ByVal pDefault As Long) As Long
Private Declare Function GetPrinter Lib "winspool.drv" Alias "GetPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, buffer As Long, ByVal pbSize As Long, pbSizeNeeded As Long) As Long
Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Private Sub Command1_Click()
MsgBox IsPrinterReady(Printer.DeviceName)
End Sub
Private Function IsPrinterReady(ByVal strDeviceName As String) As Boolean
Dim hPrinter As Long, lret As Long, SizeNeeded As Long
Dim buffer(1000) as long
lret = OpenPrinter(Printer.DeviceName, hPrinter, 0&)
lret = GetPrinter(hPrinter, 7, buffer(0), 1000, SizeNeeded) '返回值总=0(调用失败)
ClosePrinter hPrinter
IsPrinterReady = (buffer(0) = Printer_Status.PRINTER_STATUS_READY)
End Function
返回值总=0(调用失败),而且buffer(0)也总 = 0 没有获得打印机状态,是参数不正确吗??
第2个参数从1—7我都试过了
小弟跪谢~~~~! 急盼~~~~~
...全文
相关推荐
获取打印机状态Delphi
用程序获取打印机状态 网络上的一些代码都不能成功 借鉴一下,查看API函数,一般是函数的参数使用不当造成 终于成功! 含源代码: Delphi6
PowerBuilder中获取与管理打印机信息的完整技术指南
利用动态属性语法,你可以完全定制预览界面:dw_main.Object.DataWindow.Print.Preview.Title = "【机密】财务年报预览"dw_main.Object.DataWindow.Print.Preview.CloseButton.Caption = "关闭预览"甚至还能隐藏打印按钮,防止误操作:PowerBuilder 的打印机制或许不够现代化,但它足够稳定、足够灵活。只要我们愿意花时间去理解它的运行原理,就能把它打造成一把锋利的工具。
c#获取打印机当前打印状态完整源码
公司业务需要,编写的可以获取当前打印机状态程序,例如缺纸,缺墨,暂停等,vs2103开发,首先获取本机所有打印机,然后指定特定打印机获取状态。
Delphi 打印机
Delphi 打印机
C#获取打印机状态+API函数详细讲解.docx
C#获取打印机状态+API函数详细讲解.docx


数据库(包含打印,安装,报表)

