怎样可以得到当前打印机的各种属性???
包括纸张类型、自定义大小、以及打印首选项???
包括怎样在VB中去操作这些属性。
是不是要使用API函数?到底是哪个函数呀,最好给个例子。

解决方案 »

  1.   

    VB的Printer对象
    Printer.
    ...
      

  2.   

    Printer 对象常数
    打印机颜色模式
    常数 值 描述 
    vbPRCMMonochrome 1 单色输出 
    vbPRCMColor 2 彩色输出 
    双面打印
    常数 值 描述 
    vbPRDPSimplex 1 单面打印 
    vbPRDPHorizontal 2 双面水平打印 
    vbPRDPVertical 3 双面垂直打印 
    打印方向
    常数 值 描述 
    vbPRORPortrait 1 文档打印以纸的窄边作顶部 
    vbPRORLandscape 2 文档打印以纸的宽边作顶部 
    打印质量
    常数 值 描述 
    vbPRPQDraft -1 草稿打印质量 
    vbPRPQLow -2 低级打印质量 
    vbPRPQMedium -3 中等打印质量 
    vbPRPQHigh -4 高级打印质量 
    PaperBin 属性
    常数 值 描述 
    vbPRBNUpper 1 从上层纸盒进纸 
    vbPRBNLower 2 从下层纸盒进纸 
    vbPRBNMiddle 3 从中间纸盒进纸 
    vbPRBNManual 4 等待手动插入每页纸 
    vbPRBNEnvelope 5 从信封进纸器进纸 
    vbPRBNEnvManual 6 从信封进纸器进纸;但要等待手动插入 
    vbPRBNAuto 7 (缺省方式)从当前缺省纸盒进纸 
    vbPRBNTractor 8 从拖拉进纸器供纸 
    vbPRBNSmallFmt 9 从小型进纸器进纸 
    vbPRBNLargeFmt 10 从大型纸盒进纸 
    vbPRBNLargeCapacity 11 从大容量进纸器进纸 
    vbPRBNCassette 14 从附加的卡式纸盒进纸 
    PaperSize 属性
    常数 值 描述 
    vbPRPSLetter 1 信笺, 8 1/2 x 11 英寸 
    vbPRPSLetterSmall 2 +A611 小型信笺, 8 1/2 x 11 英寸 
    vbPRPSTabloid 3 小型报, 11 x 17 英寸 
    vbPRPSLedger 4 分类帐, 17 x 11 英寸 
    vbPRPSLegal 5 法律文件, 8 1/2 x 14 英寸 
    vbPRPSStatement 6 声明书,5 1/2 x 8 1/2 英寸 
    vbPRPSExecutive 7 行政文件,7 1/2 x 10 1/2 英寸 
    vbPRPSA3 8 A3, 297 x 420 mm 
    vbPRPSA4 9 A4, 210 x 297 mm 
    vbPRPSA4Small 10 A4小号, 210 x 297 mm 
    vbPRPSA5 11 A5, 148 x 210 mm 
    vbPRPSB4 12 B4, 250 x 354 mm 
    vbPRPSB5 13 B5, 182 x 257 mm 
    vbPRPSFolio 14 对开本, 8 1/2 x 13 英寸 
    vbPRPSQuarto 15 四开本, 215 x 275 mm 
    vbPRPS1&H14 16 10 x 14 英寸 
    vbPRPS11x17 17 11 x 17 英寸 
    vbPRPSNote 18 便条,8 1/2 x 11 英寸 
    vbPRPSEnv9 19 #9 信封, 3 7/8 x 8 7/8 英寸 
    vbPRPSEnv10 20 #10 信封, 4 1/8 x 9 1/2 英寸 
    vbPRPSEnv11 21 #11 信封, 4 1/2 x 10 3/8 英寸 
    vbPRPSEnv12 22 #12 信封, 4 1/2 x 11 英寸 
    vbPRPSEnv14 23 #14 信封, 5 x 11 1/2 英寸 
    vbPRPSCSheet 24 C 尺寸工作单 
    vbPRPSDSheet 25 D 尺寸工作单 
    vbPRPSESheet 26 E 尺寸工作单 
    vbPRPSEnvDL 27 DL 型信封, 110 x 220 mm 
    vbPRPSEnvC3 29 C3 型信封, 324 x 458 mm 
    vbPRPSEnvC4 30 C4 型信封, 229 x 324 mm 
    vbPRPSEnvC5 28 C5 型信封, 162 x 229 mm 
    vbPRPSEnvC6 31 C6 型信封, 114 x 162 mm 
    vbPRPSEnvC65 32 C65 型信封,114 x 229 mm 
    vbPRPSEnvB4 33 B4 型信封, 250 x 353 mm 
    vbPRPSEnvB5 34 B5 型信封,176 x 250 mm 
    vbPRPSEnvB6 35 B6 型信封, 176 x 125 mm 
    vbPRPSEnvItaly 36 信封, 110 x 230 mm 
    vbPRPSEnvMonarch 37 信封大王, 3 7/8 x 7 1/2 英寸 
    vbPRPSEnvPersonal 38 信封, 3 5/8 x 6 1/2 英寸 
    vbPRPSFanfoldUS 39 U.S. 标准复写簿, 14 7/8 x 11 英寸 
    vbPRPSFanfoldStdGerman 40 德国标准复写簿, 8 1/2 x 12 英寸 
    vbPRPSFanfoldLglGerman 41 德国法律复写簿, 8 1/2 x 13 英寸 
    vbPRPSUser 256 用户定义 
      

  3.   

    EndDoc方法示例 
    本示例使用 EndDoc 方法在打印完两页之后结束一个文件,该被打印的每页按正文行居中方式显示页号。要检验此示例,可将本例代码粘贴到一个窗体的声明部分,然后按 F5 键并单击该窗体。Private Sub Form_Click ()
       Dim HWidth, HHeight, I, Msg   ' 声明变量。
       On Error GoTo ErrorHandler   ' 设置错误处理程序。
       Msg = "This is printed on page"
       For I = 1 To 2   ' 设置 2 个迭代。
          HWidth = Printer.TextWidth(Msg) / 2   ' 取得半宽。
          HHeight = Printer.TextHeight(Msg) /2   ' 取得半高。
          Printer.CurrentX = Printer.ScaleWidth / 2 - HWidth
          Printer.CurrentY = Printer.ScaleHeight / 2 - HHeight
          Printer.Print Msg & Printer.Page & "."   ' 打印。
          Printer.NewPage   ' 发送新页。
       Next I
       Printer.EndDoc   ' 打印完成。
       Msg = "Two pages, each with a single, centered line of text, "
       Msg = Msg & "have been sent to your printer."
       MsgBox Msg   ' 显示信息。
       Exit Sub
    ErrorHandler:
       MsgBox "There was a problem printing to your printer."
       Exit Sub
    End Sub
    KillDoc 方法示例 
    本示例使用 KillDoc 方法来终止当前打印工作。要检验此示例,可将本例代码粘贴到一个窗体的声明部分,然后按 F5 键并单击该窗体。Private Sub Form_Click()
       For i = 1 To 40
          Printer.CurrentX = 1440   ' 设置左边距。
          Printer.CurrentY = (i * 300)   ' 进页到下一行。
          Printer.Print "This is line" & Str$(i) & " of text."
          On Error Resume Next   ' 捕获任何打印机错误。
          If i = 26 Then
             Printer.KillDoc   ' 立即终止打印作业。
             Printer.EndDoc
             End
          End If
       Next i
    End Sub
    NewPage 方法示例 
    本示例使用 NewPage 方法在一页上打印出一行居中正文后开始一个新的打印页。要检验此示例,可将本例代码粘贴到一个窗体的声明部分,然后按 F5 键并单击该窗体。Private Sub Form_Click ()
       Dim HWidth, HHeight, I, Msg   ' 声明变量。
       On Error GoTo ErrorHandler   ' 设置错误处理程序。
       Msg = "This is printed on page"
       For I = 1 To 2   ' 设置 2 个迭代。
          HWidth = Printer.TextWidth(Msg) / 2   ' 取半宽。
          HHeight = Printer.TextHeight(Msg) /2   ' 取半高。
          Printer.CurrentX = Printer.ScaleWidth / 2 - HWidth
          Printer.CurrentY = Printer.ScaleHeight / 2 - HHeight
          Printer.Print Msg & Printer.Page & "."   ' 打印。
          Printer.NewPage   ' 发送新页。
       Next I
       Printer.EndDoc   ' 打印完毕。
       Msg = "Two pages, each with a single, centered line of text, "
       Msg = Msg & "have been sent to your printer."
       MsgBox Msg   ' 显示信息。
       Exit Sub
    ErrorHandler:
       MsgBox "There was a problem printing to your printer."
       Exit Sub
    End Sub
      

  4.   

    其实如果不使用 API,我们还是可以使用 Printer 物件很轻易的就得到我们要的资料!Printer 物件有很多个属性,其中三个是:DeviceName:返回驱动程序支持的周边设备名称。
    DriverName:返回 Printer 物件的驱动程序名称。
    Port:返回连接端口。使用实例如下:Private Sub Command1_Click()
    Debug.Print Printer.DeviceName 
    Debug.Print Printer.DriverName
    Debug.Print Printer.Port
    End Sub
    Printer 物件还有很多好用的属性及方法,例如设定打印机的打印方向 (Orientation)、纸张大小 (PaperSize)、打印份数 (Copies)、打印品质 (PrintQuality)、放大缩小 (Zoom)...等,可以自行到线上手册或 Msdn 上查询!