PrintQueue auslesen (Dokumentenname)

  • VBScript

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Achilleus.

    PrintQueue auslesen (Dokumentenname)

    Hallo Leute,

    seit 11 Jahren hatte ich eine eigene VB6-DLL im Einsatz gehabt, dir mir die Printqueue ausgelesen hatte, die jetzt aber wohl nicht mehr funktioniert. Ich erhalte immer einen Klassenfehler. ;(
    Das ist aber auch nicht weiter schlimm, da meine DLL sowieso nur zwei Dinge gemacht hatte:

    1. Anzahl Druckjobs je Drucker angezeigt
    2. Filter auf Dokumentname




    Die Anzahl der Druckjobs je Drucker kann ich auslesen, dass klappt auch einwandfrei.
    Meine Problem ist im Augenblick, wie komme ich an die Dokumentnamen heran.
    Leider ist mein gesamter VB6-Programmcode verloren gegangen, so dass ich hier nicht nach schauen kann.
    Aus diesem Grunde baue ich mir die DLL nun in VBS nach.

    Hat einer eine Idee, wie ich jetzt an alle Dokumentennamen je Drucker herankomme?

    Meine Funktion sieht im Augenblick wie folgt aus:

    VB.NET-Quellcode

    1. Public Function AnzahlDruckauftrag(PrinterName As String, Optional DokumentName As String = "", Optional blnWait As Boolean = False) As Integer
    2. Dim strComputer As String
    3. Dim objWMIService As Object
    4. Dim colPrinterQueues As New Collection
    5. Dim Result As Integer
    6. strComputer = "."
    7. Set objWMIService = GetObject("winmgmts:" _
    8. & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    9. Set colPrintQueues = objWMIService.ExecQuery _
    10. ("Select * from Win32_PerfFormattedData_Spooler_PrintQueue Where " & _
    11. "Name <> '_Total'")
    12. For Each objPrintQueue In colPrintQueues
    13. If objPrintQueue.Name = PrinterName Then
    14. If blnWait Then
    15. Do
    16. Result = AnzahlDruckauftrag(PrinterName)
    17. Loop While Result <> 0
    18. Exit For
    19. Else
    20. AnzahlDruckauftrag = objPrintQueue.Jobs
    21. Exit For
    22. End If
    23. End If
    24. Next
    25. End Function


    Ich hoffe ich konnte mich verständlich ausdrücken und jemand hat eine Idee.
    Vielleicht weiß auch jemand, wie ich gezielt auf den Drucker gleich filtern kann. :love:

    Vielen Dank im Voraus.

    Gruß Achilleus
    Du kannst mit der Spooler API was machen. Brauchste

    EnumPrinters
    learn.microsoft.com/en-us/wind…32/printdocs/enumprinters

    und EnumJobs
    learn.microsoft.com/de-de/windows/win32/printdocs/enumjobs

    So kommste an JOB_INFO_1 und JOB_INFO_2 Strukturen, die haben den Dokumentnamen inne.
    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D