如何判断打印机是否加电,是否有纸?
各位高手:我编的打印程序,希望能对打印机是否已经加电,打印机是否有纸进行判断,我在网上查到一篇文章《VFP应用程序打印功能的完善》介绍了一段程序,我稍作修改程序后如下:
Declare Integer vbinp In win95io.Dll Integer
Declare Integer vbinpw In win95io.Dll Integer
printrstatus=vbinpw(888)
Do Case
Case printrstatus>31000 And printrstatus<5000
Messagebox('打印机没加电,请加电!')
Return
Case printrstatus<31000
Messagebox('打印机没纸,请装纸!')
Return
Endcase
程序运行到第一句时出现错误提示:“不能加载32位dllwin95io.dll”,我在自己的电脑中未查到这个程序,网上有下载该dll程序。我不知道这段程序能否在vfp9.0中使用,如不能使用,应如何解决这类问题?谢谢!
[解决办法]
本帖最后由 apple_8180 于 2013-03-13 14:59:36 编辑 win95io.Dll
从字面来看应该是 Windows 98 以前的控件。
如果是打印机故障或未加电造成没有打印成功是无法从得到的,因为打印任务发出后,就到了操作系统层,打印成功与否 VFP 端不知道。
你看一下 VFP 自带帮助文件中的 SYS(13) - 打印机状态
对于运行在 Windows 上的 Visual FoxPro 版本,SYS(13) 总是返回 READY。
所以我说无法得到
[解决办法]
楼主代码估计是直接往打印口(并口)发送代码查询打印机状态的
我想有两个问题:
1、你现在用的打印是机否支持这种方式查询?
2、现在win7至少XP,如何直接与并口或usb接口通讯?
如果这两个问题都能解决,才能实现功能
[解决办法]
Set Escape On
Clear
strComputer = "."
objWMIService = Getobject("winmgmts:"+ "{impersonationLevel=impersonate}!\" + strComputer + "\root\cimv2")
colInstalledPrinters = objWMIService.ExecQuery("SELECT * FROM Win32_Printer")
For Each objPrinter In colInstalledPrinters
? "Name: " + objPrinter.Name
Do Case
Case objPrinter.PrinterStatus = 1
strPrinterStatus = "其它 "
Case objPrinter.PrinterStatus = 2
strPrinterStatus = "未知的"
Case objPrinter.PrinterStatus = 3
strPrinterStatus = "等待中"
Case objPrinter.PrinterStatus = 4
strPrinterStatus = "在打印"
Case objPrinter.PrinterStatus = 5
strPrinterStatus = "预热中"
Endcase
? "打印机状态: " + strPrinterStatus
Next