2009-05-20 20 views
7

Gibt es eine Möglichkeit, einen Code zu schreiben, der mit dem Drucker "sprechen" kann, um einige grundlegende Informationen über seinen Status zu erhalten? Was ich wirklich interessiert, ist herauszufinden, ob Papier ausgegangen ist oder ein Papierstau vorliegt - Dinge dieser Art. Sollte ich System.Management-Bibliothek für diese Art von Sachen verwenden?Mit einem Drucker sprechen

PS - Es wäre auch praktisch zu wissen, wie man alle Drucker, die auf einem bestimmten PC eingerichtet wurden, in den Griff bekommt. Wie würdest du das machen?

+0

* zieht Witzhut * mein Vater ist ein Drucker und ich rede jeden Tag mit ihm. –

+0

Bleib bei der Programmierung von Olafur !! :) – Vidar

Antwort

9

Informationen von Druckern, die System.Management verwenden, sind relativ einfach.

//Declare WMI Variables 
    ManagementObject MgmtObject; 
    ManagementObjectCollection MgmtCollection; 
    ManagementObjectSearcher MgmtSearcher; 

    //Perform the search for printers and return the listing as a collection 
    MgmtSearcher = new ManagementObjectSearcher("Select * from Win32_Printer"); 
    MgmtCollection = MgmtSearcher.Get(); 

    foreach (ManagementObject objWMI in MgmtCollection) 
    { 
     //Do whatever action you want with the Printer 
    } 

Blick auf http://msdn.microsoft.com/en-us/library/aa394363.aspx für Methoden und Eigenschaften von Win32_Printer. Für Ihre Frage:

//Test whether a Win32_Printer is out of paper or jammed 
int state = Int32.Parse(objWMI["PrinterState"]); 
if (state == 4) { 
    //Paper Jam 
} else if (state == 5) { 
    //Paper Out 
}