CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

怎样判断打印机是否准备好?

楼主huang_yi_cn(蓝色的云)2002-04-15 21:49:22 在 VB / 基础类 提问

怎样判断打印机是否准备好?  
  谢谢!  
  问题点数:20、回复次数:4Top

1 楼water_j(随心所欲)回复于 2002-04-15 22:01:00 得分 0

gz!Top

2 楼enmity(灵感之源)回复于 2002-04-15 22:41:11 得分 20

Option   Explicit  
   
  Private   Const   CCHDEVICENAME   =   32  
  Private   Const   CCHFORMNAME   =   32  
   
  Private   Type   DEVMODE  
                  dmDeviceName   As   String   *   CCHDEVICENAME  
                  dmSpecVersion   As   Integer  
                  dmDriverVersion   As   Integer  
                  dmSize   As   Integer  
                  dmDriverExtra   As   Integer  
                  dmFields   As   Long  
                  dmOrientation   As   Integer  
                  dmPaperSize   As   Integer  
                  dmPaperLength   As   Integer  
                  dmPaperWidth   As   Integer  
                  dmScale   As   Integer  
                  dmCopies   As   Integer  
                  dmDefaultSource   As   Integer  
                  dmPrintQuality   As   Integer  
                  dmColor   As   Integer  
                  dmDuplex   As   Integer  
                  dmYResolution   As   Integer  
                  dmTTOption   As   Integer  
                  dmCollate   As   Integer  
                  dmFormName   As   String   *   CCHFORMNAME  
                  dmUnusedPadding   As   Integer  
                  dmBitsPerPel   As   Long  
                  dmPelsWidth   As   Long  
                  dmPelsHeight   As   Long  
                  dmDisplayFlags   As   Long  
                  dmDisplayFrequency   As   Long  
  End   Type  
   
  Public   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   Type   PRINTER_DEFAULTS  
      pDatatype   As   String  
      pDevMode   As   DEVMODE  
      DesiredAccess   As   Long  
  End   Type  
   
  Private   Declare   Function   OpenPrinter   Lib   "winspool.drv"   _  
          Alias   "OpenPrinterA"   (ByVal   pPrinterName   As   String,   _  
          phPrinter   As   Long,   pDefault   As   PRINTER_DEFAULTS)   As   Long  
   
  Private   Declare   Function   ClosePrinter   Lib   "winspool.drv"   _  
          (ByVal   hPrinter   As   Long)   As   Long  
   
   
   
  Private   Sub   Command1_Click()  
   
          Dim   lret   As   Long  
          Dim   pDef   As   PRINTER_DEFAULTS  
          Dim   mhPrinter   As   Long  
           
          mhPrinter   =   Printer.hDC  
          lret   =   OpenPrinter(Printer.DeviceName,   mhPrinter,   pDef)  
           
          MsgBox   lret  
           
          lret   =   ClosePrinter(mhPrinter)  
   
  End   Sub  
  Top

3 楼enmity(灵感之源)回复于 2002-04-15 22:43:32 得分 0

Private   Sub   Command2_Click()  
   
      Dim   lret   As   Long  
      Dim   SizeNeeded   As   Long  
      Dim   mhPrinter   As   Long  
      Dim   index   As   Long  
   
      Dim   buffer()   As   Long  
       
      Dim   mPRINTER_INFO_2   As   PRINTER_INFO_2  
   
      ReDim   Preserve   buffer(0   To   1)   As   Long  
      lret   =   GetPrinterApi(mhPrinter,   index,   buffer(0),   UBound(buffer),   SizeNeeded)  
      ReDim   Preserve   buffer(0   To   (SizeNeeded   /   4)   +   3)   As   Long  
      lret   =   GetPrinterApi(mhPrinter,   index,   buffer(0),   UBound(buffer)   *   4,   SizeNeeded)  
   
          With   mPRINTER_INFO_2   '\\   This   variable   is   of   type   PRINTER_INFO_2  
                .pServerName   =   StringFromPointer(buffer(0),   1024)  
                .pPrinterName   =   StringFromPointer(buffer(1),   1024)  
                .pShareName   =   StringFromPointer(buffer(2),   1024)  
                .pPortName   =   StringFromPointer(buffer(3),   1024)  
                .pDriverName   =   StringFromPointer(buffer(4),   1024)  
                .pComment   =   StringFromPointer(buffer(5),   1024)  
                .pLocation   =   StringFromPointer(buffer(6),   1024)  
                .pDevMode   =   buffer(7)  
                .pSepFile   =   StringFromPointer(buffer(8),   1024)  
                .pPrintProcessor   =   StringFromPointer(buffer(9),   1024)  
                .pDatatype   =   StringFromPointer(buffer(10),   1024)  
                .pParameters   =   StringFromPointer(buffer(11),   1024)  
                .pSecurityDescriptor   =   buffer(12)  
                .Attributes   =   buffer(13)  
                .Priority   =   buffer(14)  
                .DefaultPriority   =   buffer(15)  
                .StartTime   =   buffer(16)  
                .UntilTime   =   buffer(17)  
                .Status   =   buffer(18)  
                .JobsCount   =   buffer(19)  
                .AveragePPM   =   buffer(20)  
          End   With  
   
   
  End   Sub  
   
   
  Public   Function   StringFromPointer(lpString   As   Long,   lMaxLength   As   Long)   As   String  
   
   
      Dim   sRet   As   String  
      Dim   lret   As   Long  
   
      If   lpString   =   0   Then  
          StringFromPointer   =   ""  
          Exit   Function  
      End   If  
   
      If   IsBadStringPtrByLong(lpString,   lMaxLength)   Then  
          '\\   An   error   has   occured   -   do   not   attempt   to   use   this   pointer  
              StringFromPointer   =   ""  
          Exit   Function  
      End   If  
   
      '\\   Pre-initialise   the   return   string...  
      sRet   =   Space$(lMaxLength)  
      CopyMemory   ByVal   sRet,   ByVal   lpString,   ByVal   Len(sRet)  
      If   Err.LastDllError   =   0   Then  
          If   InStr(sRet,   Chr$(0))   >   0   Then  
              sRet   =   Left$(sRet,   InStr(sRet,   Chr$(0))   -   1)  
          End   If  
      End   If  
   
      StringFromPointer   =   sRet  
   
  End   Function  
   
  Top

4 楼enmity(灵感之源)回复于 2002-04-15 22:45:15 得分 0

具体例子,请参考:  
   
  http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=30390&lngWId=1Top

相关问题

  • 如何判断打印机是否准备就绪?
  • 请问asp中如何判断打印机是否准备好?谢谢!
  • 怎么判断是否有打印机或者打印机驱动?
  • 判断打印机是否安装的函数?
  • 例子代码:简单地判断打印机是否存在
  • 请问如何判断系统中是否存在打印机
  • 怎样判断系统是否安装有打印机
  • 如何判断是否存在系统打印机
  • 如何判断当前是否连有打印机?
  • 各位高手,请问怎样判断打印机是否缺纸,给重分※Ⅵ

关键词

  • 判断
  • printer
  • as integer
  • cchformname
  • cchdevicename
  • 打印机是否准备好
  • status
  • as long
  • const
  • private

得分解答快速导航

  • 帖主:huang_yi_cn
  • enmity

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo