前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何查找正在等待打印的打印机的打印任务

如何查找正在等待打印的打印机的打印任务

作者头像
加菲猫的VFP
发布2023-08-21 17:11:34
1660
发布2023-08-21 17:11:34
举报
文章被收录于专栏:加菲猫的VFP加菲猫的VFP

代码在这里啦 。

代码语言:javascript
复制
* the offset to the "Jobs number" member
* in the PRINTER_INFO_2 structure
#DEFINE CJOBS_OFFSET  77

DO declare

LOCAL hPrinter, cPrinter, cPrnInfo, nBufsize, nResult
cPrinter = GetPrnName()
? "Default printer: ", cPrinter

hPrinter = 0
IF OpenPrinter(cPrinter, @hPrinter, 0) = 0
  ? "Unable to obtain the handle for this printer."
  RETURN
ENDIF

nBufsize = 4096  && allocate sufficient buffer
cPrnInfo = REPLICATE(Chr(0), nBufsize)
nResult = GetPrinterA(hPrinter, 2, @cPrnInfo,;
  nBufsize, @nBufsize)

IF nResult = 0
  ? "Error code:", GetLastError()
ELSE
  ? "Number of print jobs queued:",;
    buf2dword(SUBSTR(cPrnInfo, CJOBS_OFFSET,4))
ENDIF

= ClosePrinter(hPrinter)
* end of main

FUNCTION GetPrnName
* returns default printer name from Windows Registry
  LOCAL cBuffer, cPrinter, cDriver, cPort
  cBuffer = REPLICATE(CHR(0), 120)

  = GetProfileString("Windows", "Device", ",,,",;
    @cBuffer, Len(cBuffer))
  cBuffer = STRTRAN(cBuffer, Chr(0), "")
RETURN SUBSTR(cBuffer, 1, AT(",", cBuffer, 1)-1)

PROCEDURE declare
  DECLARE INTEGER OpenPrinter IN winspool.drv;
    STRING pPrinterName, INTEGER @phPrinter, INTEGER pDefault

  DECLARE INTEGER ClosePrinter IN winspool.drv INTEGER hPrinter

  DECLARE INTEGER GetProfileString IN kernel32;
    STRING lpApp, STRING lpKey, STRING lpDefault,;
    STRING @lpReturnedString, INTEGER nSize

  DECLARE INTEGER GetPrinter IN winspool.drv AS GetPrinterA;
    INTEGER hPrinter, INTEGER Lvl, STRING @pPrinter,;
    INTEGER cbBuf, INTEGER @pcbNeeded

  DECLARE INTEGER GetLastError IN kernel32

FUNCTION buf2dword(cBuffer)
RETURN Asc(SUBSTR(cBuffer, 1,1)) + ;
  BitLShift(Asc(SUBSTR(cBuffer, 2,1)),  8) +;
  BitLShift(Asc(SUBSTR(cBuffer, 3,1)), 16) +;
  BitLShift(Asc(SUBSTR(cBuffer, 4,1)), 24)  
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 加菲猫的VFP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档