Windows - Letzter Druckauftrag - Wann?

    • Offizieller Beitrag

    Mich interessiert, ob man mit AutoIt herausfinden kann, wann der letzte Druckauftrag für einen bestimmten Drucker passiert ist.
    Wenn nicht für einen bestimmten Drucker, dann würde es mir auch reichen, wann der letzte Druckauftrag insgesamt passierte?
    Wird das irgendwo in der Registry eingetragen? Oder muss ich den Spools-Ordner permanent überwachen? Letzteres wäre nicht so schön.

    Man kann zwar die Druckaufträge nach dem drucken nicht löschen lassen und anhand des Dateidatums nachsehen, aber ich möchte nach Möglichkeit nichts an den Druckereinstellungen ändern müssen.

    Jemand eine Idee?

  • Druckaufträge im Eventlog protokollieren lassen?

    • Offizieller Beitrag

    Nicht so gut, weil das Eventlog in der Größe begrenzt ist und man Adminrechte braucht. :S

    Ich habe jetzt aber rausgefunden, dass Windows den Timestamp vom PRINTERS-Verzeichnis modifiziert.
    Das heißt, es funktioniert das hier:

    [autoit]


    #include <Date.au3>
    #AutoIt3Wrapper_UseX64=y ; <- für x86-Systeme hier 'n' eintragen
    $sPrinterSpoolDir = @SystemDir & '\spool\PRINTERS'
    $sLastModified = FileGetTime($sPrinterSpoolDir, 0, 1)
    If @error Then Exit MsgBox(0, 'Fehler', 'FileGetTime')
    $sLastModified = StringRegExpReplace($sLastModified, '(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})', '$1/$2/$3 $4:$5:$6')
    ConsoleWrite('Letzter Druckauftrag = ' & $sLastModified & @CR)
    $sDiffDays = _DateDiff('D', $sLastModified, _NowCalc())
    ConsoleWrite('Differenz in Tagen = ' & $sDiffDays & @CR)

    [/autoit]

    Zur Not genügt mir das. Wenn es allerdings eine Möglichkeit für jeden Drucker einzeln gäbe, wäre ich noch interessiert. :)