Drucker Auswertung

  • Hallo
    da es bei uns in der Firma doch nicht gebraucht wird
    Ist es von interesse Wer wie Viel Druckt?
    dan ist das Script das Richtigte

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------
    AutoIt Version: 3.2.0.1
    Author: Uli Effinger
    #ce ----------------------------------------------------------------------------
    #include <file.au3>
    #include <Process.au3>
    #Include <Constants.au3>
    #NoTrayIcon
    Opt("TrayMenuMode",1) ; Default tray menu items (Script Paused/Exit) will not be shown.
    Global $objWMIService, $OEvent, $var
    Global $stoploop = 0
    $Druckerini = @ScriptDir & "\Drucker.ini"
    $Log = @ScriptDir &"\Druckerlog.log"

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $settingsitem = TrayCreateMenu("Programm")
    $displayitem = TrayCreateItem("Einstellungen", $settingsitem)
    $statistikitem = TrayCreateItem("Statistik", $settingsitem)
    $logitem = TrayCreateItem("Log Datei Anzeigen", $settingsitem)
    TrayCreateItem("")
    $aboutitem = TrayCreateItem("About")
    TrayCreateItem("")
    $exititem = TrayCreateItem("Exit")
    TraySetState()
    TraySetClick(16)

    [/autoit] [autoit][/autoit] [autoit]

    $OEvent=ObjEvent("AutoIt.Error","nothing")
    $strcomputer = "."
    $objWMIService = ObjGet("winmgmts:\\" & $strcomputer & "\root\cimv2")
    if "" == $objWMIService then
    if 1 == $debug then MsgBox(0,"WMI Error", "Can connect to WMI service")
    Exit
    endif
    While 1 And ($stoploop == 0)
    $slots = $objWMIService.ExecQuery("Select * from Win32_PrintJob")
    if Not IsObj( $slots ) then
    if 1 == $debug then MsgBox(0, "WMI Error", "No WMI objects found")
    Exit
    endif
    $i = 0
    for $Drucker in $slots
    $besitzer = $Drucker.Owner
    $status = $Drucker.Status
    $jobstatus = $Drucker.JobStatus
    $Dokumet = $Drucker.JobId
    $DruckerName = $Drucker.Name
    $Seiten_insgesamt = $Drucker.TotalPages
    $Seiten_Printed = $Drucker.PagesPrinted
    $Seiten_gedruckt = IniRead ( $Druckerini, $besitzer, "Seiten", "0" )
    $Letzes_Dokumet = IniRead ( $Druckerini, $besitzer, "JobNummer", "0" )
    if ($Letzes_Dokumet <> $Dokumet) and ($jobstatus <> "Spoolvorgang") Then
    $Seiten = $Seiten_insgesamt + $Seiten_gedruckt + $Seiten_Printed
    IniWrite ( $Druckerini, $besitzer, "Seiten",$Seiten)
    IniWrite ( $Druckerini, $besitzer, "JobNummer", $Dokumet)
    ;~ _FileWriteLog($Log,"Besizer: " & $besitzer & " Status: " & $status & " JobStaus: " & $jobstatus & " Jobnummer: " & $Dokumet & " Druckername: " & $DruckerName & " Seiten Inggesamt: " & $Seiten_insgesamt& " Seiten_Printed: " & $Seiten_Printed)
    EndIf
    ;~ $start = $Drucker.Resume
    ;~ $stopp = $Drucker.Pause
    next
    $msg = TrayGetMsg()
    Select
    Case $msg = 0
    ContinueLoop
    Case $msg = $aboutitem
    Msgbox(64,"About:","Ein Nettes Script" & @CRLF & "Danke")
    Case $msg = $exititem
    ExitLoop
    Case $msg = $displayitem
    MsgBox(0,"Anzeige","Einstellungen")
    Case $msg = $statistikitem
    MsgBox(0,"Anzeige","statistik")
    Case $msg = $logitem
    run(@WindowsDir &"\system32\notepad.exe "& $Log)
    EndSelect
    WEnd

    [/autoit]


    Es ist nicht fertig
    wird aber auch nicht weiter gemacht
    die Eistellungen und Statisi sollten eine eigen Exe werden