首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

怎么判断打印机是否加电,是否有纸

2013-03-19 
如何判断打印机是否加电,是否有纸?各位高手:我编的打印程序,希望能对打印机是否已经加电,打印机是否有纸进

如何判断打印机是否加电,是否有纸?
各位高手:我编的打印程序,希望能对打印机是否已经加电,打印机是否有纸进行判断,我在网上查到一篇文章《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

热点排行