Programm starten, wenn Druckauftrag gegeben wurde


  • Administrator

    Grüsse zusammen,

    Zuerst das allgemeine Problem:
    Ich habe einen Printserver gekauft, der funktioniert auch mehr oder weniger und hat eine entsprechende Software dazu. Diese Software kann man allerdings nicht so einstellen, dass sie sich nach dem Drucken beendet. Sie scheint aber ziemlich schwerlastig zu sein und das System leicht zu bremsen, wenn sie im Hintergrund läuft.
    Daher habe ich mich entschlossen, dass ich gerne einen kleinen Wrapper um das Programm bauen möchte. Mein Programm läuft und wartet auf Druckaufträge. Sobald welche reinkommen, soll das Programm vom Hersteller gestartet werden und wenn keine Druckaufträge mehr vorhanden sind, soll das Programm wieder beendet werden.

    Programm start -> CreateProcess
    Programm ende -> Send-/PostMessage WM_CLOSE an das Handle von CreateProcess
    Eigenes ende -> WM_ENDSESSION Reaktion

    Aber wie erkenne ich nun, dass ein Druckauftrag gegeben wurde? Bzw. wie liste ich mir die Druckerwarteschlangen auf und lasse eine bestimmte dann überprüfen?
    Und was haltet ihr von der Idee, bzw. habt ihr bessere?

    Grüssli



  • Naja ein Printerserver ist ja sowieso nur da um die Druckaufträge von den ganzen angeschlossenen PCs zu managen.

    Von daher ist es doch ziemlich egal wie "schwerlastig" die Software läuft, die eben genau diese Sache macht.

    Es muss ja nichts anderes auf dem Printerserver laufen.


  • Administrator

    Printserver... schrieb:

    Naja ein Printerserver ist ja sowieso nur da um die Druckaufträge von den ganzen angeschlossenen PCs zu managen.

    Von daher ist es doch ziemlich egal wie "schwerlastig" die Software läuft, die eben genau diese Sache macht.

    Es muss ja nichts anderes auf dem Printerserver laufen.

    Nur dumm, dass die Software nicht auf dem Printserver läuft, sondern auf den Desktop-PCs. Das ist ein reiner Printserver nicht ein normaler Server, welcher als Printserver eingerichtet wurde.
    Die Software auf den Desktop-PCs probiert dann die Verbindung mit dem Printserver herzustellen. Wenn dieser schon besetzt ist, wartet sie ab, bis er wieder frei ist.
    Ist halt so ein USB <-> Ethernet Adapter oder wie du ihn nennen willst. Man nennt sie normalerweise Printserver, haben aber nichts mit den Printservern in Firmen gemeinsam 😉

    Grüssli


  • Mod

    Einfach ab und zu nachsehen ob ein Printjob da ist.
    OpenPrinter
    http://msdn.microsoft.com/en-us/library/ms536027(VS.85).aspx
    EnumJobs
    http://msdn.microsoft.com/en-us/library/ms535514(VS.85).aspx

    Bei Bedarf Deinen Prozess starten oder beenden.


  • Administrator

    Ha, Windows GDI! Dort sind die Druckerfunktionen versteckt. Danke Martin!
    Habe sogar, statt dem ab und zu nachsehen, eine bessere Funktionsmöglichkeit gefunden:
    FindFirstPrinterChangeNotification
    FindNextPrinterChangeNotification

    Damit sollte ich in der Lage sein, die Jobs zu überwachen und entsprechend darauf zu reagieren.

    Nochmals danke!

    Grüssli


Anmelden zum Antworten