首页 > 解决方案 > 基于VB.Net和VB6如何获取打印机池的每一项详细信息(如状态、页面、打印页面、文档名称)?

问题描述

朋友们:

谁能帮我解决这个问题?有关我的问题,请参阅附图。

我想基于 VB.net 创建一个这样的函数:

Improts System.printing
    Public Function GetPrinterPoolDetails(ByVal PrinterName As String, ByVal sFile As String, ByRef HasPrinted As Integer, ByRef Pages As Integer,
                                 ByRef PrintingStatus As String, Optional ByVal OPeration As String = "") As Integer

    Dim Ps As PrintServer = New PrintServer()
    Dim PrintQueues As PrintQueueCollection = Ps.GetPrintQueues()
    Dim Filename As String = IO.Path.GetFileName(sFile)
    For Each Item As PrintQueue In PrintQueues
        If Item.Name.EndsWith(Filename) Then
            Item.Refresh()
            Dim Coll As PrintJobInfoCollection = Item.GetPrintJobInfoCollection()
            If Not Coll Is Nothing Then
                For Each jobinfo In Coll
                    If OPeration = "Cancel" Then
                        jobinfo.Cancel()
                        Exit For
                    End If
                    HasPrinted = jobinfo.NumberOfPagesPrinted
                    Dim Status As String = jobinfo.JobStatus
                    Dim PrintSubmittedDatetime As String = jobinfo.TimeJobSubmitted
                    Pages = jobinfo.NumberOfPages
                    Return Pages
                Next
            End If
            Exit For
        End If
    Next

End Function
Private Function PrintingMonitor() as boolean
  Dim PrinterName as string="HP LaserJet 1020"
  Dim FilenameWithoutPath  as string="Test.pdf"
  Dim Pages as integer=0
  Dim HasPrintedPages  as integer =0
  Dim Status as string =""
  Do
    Dim IsOver as boolean= GetPrinterPoolDetails("HP LaserJet 1020","Test.pdf",HasPrintedPages  ,Pages ,Status  ,"")
     LProgress.text="Printing Status:" & Status  & "Document For Printing is: " & "Test.pdf  HasDone:" & HasPrintedPages  & "/" & Pages
     Sleep (1000)
     Application.DoEvents
  loop while not IsOver and HasPrintedPages  <Pages
End Function

为什么GetPrinterPoolDetails函数会抛出异常?而且我不知道如何将 PrinterName 参数传递给调用者 ps。

谁能编写正确的代码来获取给定打印机的详细信息?

标签: vb.net

解决方案


推荐阅读