打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
获取打印机纸张信息
获取打印机纸张信息  
   
   
   
  Option   Explicit  
  Private   Const   DC_MAXEXTENT   =   5  
  Private   Const   DC_MINEXTENT   =   4  
  Private   Const   DC_PAPERNAMES   =   16  
  Private   Const   DC_PAPERS   =   2  
  Private   Const   DC_PAPERSIZE   =   3  
  Private   Declare   Function   DeviceCapabilities   Lib   "winspool.drv"   Alias   "DeviceCapabilitiesA"   (ByVal   lpDeviceName   As   String,   ByVal   lpPort   As   String,   ByVal   iIndex   As   Long,   lpOutput   As   Any,   lpDevMode   As   Any)   As   Long  
  Private   Type   POINTS  
                  x     As   Long  
                  y     As   Long  
  End   Type  
   
  '***********************************************************  
  '*   名称:GetPaperInfo  
  '*   功能:得到打印机低张信息  
  '*   用法:GetPaperInfo(控件名)  
  '*   描述:如在   form_load()中调用GetPaperInfo   MSHFlexGrid1  
  '***********************************************************  
  Public   Function   GetPaperInfo(Flex   As   MSHFlexGrid)   As   Boolean  
   
          Dim   i   As   Long,   ret   As   Long  
          Dim   Length   As   Integer,   Width   As   Integer  
          Dim   PaperNo()   As   Integer,   PaperName()   As   String,   PaperSize()   As   POINTS  
           
          With   Flex  
                  .FormatString   =   "^纸张编号|^纸张名称|^纸张长度|^纸张宽度"  
                  For   i   =   0   To   .Cols   -   1  
                          .ColWidth(i)   =   1700  
                  Next   i  
                  .AllowUserResizing   =   flexResizeColumns  
                  .Left   =   0  
          End   With  
                   
          '支持最大打印纸:  
          ret   =   DeviceCapabilities(Printer.DeviceName,   "LPT1",   DC_MAXEXTENT,   ByVal   0&,   ByVal   0&)  
          Length   =   ret   \   65536  
          Width   =   ret   -   Length   *   65536  
           
          '支持最小打印纸:  
          ret   =   DeviceCapabilities(Printer.DeviceName,   "LPT1",   DC_MINEXTENT,   ByVal   0&,   ByVal   0&)  
          Length   =   ret   \   65536  
          Width   =   ret   -   Length   *   65536  
           
          '支持纸张种类数  
          ret   =   DeviceCapabilities(Printer.DeviceName,   "LPT1",   DC_PAPERS,   ByVal   0&,   ByVal   0&)  
           
          '纸张编号  
          ReDim   PaperNo(1   To   ret)   As   Integer  
          Call   DeviceCapabilities(Printer.DeviceName,   "LPT1",   DC_PAPERS,   PaperNo(1),   ByVal   0&)  
           
          '纸张名称  
          Dim   arrPageName()   As   Byte  
          Dim   allNames   As   String  
          Dim   lStart   As   Long,   lEnd   As   Long  
          ReDim   PaperName(1   To   ret)   As   String  
          ReDim   arrPageName(1   To   ret   *   64)   As   Byte  
          Call   DeviceCapabilities(Printer.DeviceName,   "LPT1",   DC_PAPERNAMES,   arrPageName(1),   ByVal   0&)  
          allNames   =   StrConv(arrPageName,   vbUnicode)  
          'loop   through   the   string   and   search   for   the   names   of   the   papers  
          i   =   1  
          Do  
                  lEnd   =   InStr(lStart   +   1,   allNames,   Chr$(0),   vbBinaryCompare)  
                  If   (lEnd   >   0)   And   (lEnd   -   lStart   -   1   >   0)   Then  
                          PaperName(i)   =   Mid$(allNames,   lStart   +   1,   lEnd   -   lStart   -   1)  
                          i   =   i   +   1  
                  End   If  
                  lStart   =   lEnd  
          Loop   Until   lEnd   =   0  
           
          '纸张尺寸  
           
          ReDim   PaperSize(1   To   ret)   As   POINTS  
          Call   DeviceCapabilities(Printer.DeviceName,   "LPT1",   DC_PAPERSIZE,   PaperSize(1),   ByVal   0&)  
           
          '显示在表格中  
          For   i   =   1   To   ret  
                  Flex.AddItem   PaperNo(i)   &   vbTab   &   PaperName(i)   &   vbTab   &   PaperSize(i).y   &   vbTab   &   PaperSize(i).x  
          Next   i  
           
  End   Function   
    
   
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C# 打印时,自定义纸张
A4 纸张创造的神奇/组图
使用ComponenetOne C1Report实现报表打印的页面大小自定制
VB 报表页面设置
c# PrintDocument 设置自定义纸张大小的示例
VB.Net实现打印机纸张类型自动更换的方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服