2009-05-20 15 views
7

Czy istnieje sposób napisania kodu, który może "porozmawiać" z drukarką, aby uzyskać podstawowe informacje o jego stanie? Naprawdę chciałbym dowiedzieć się, czy zabrakło papieru, czy zacięcia papieru - rzeczy tego rodzaju. Czy powinienem używać biblioteki System.Management dla tego typu rzeczy?Rozmowa z drukarką

PS - Przydałaby się również wiedza, jak uzyskać wszystkie drukarki zainstalowane na danym komputerze. Jak byś to zrobił?

+0

* wkłada kapelusz do żartów * mój ojciec jest drukarką i codziennie z nim rozmawiam. –

+0

Trzymaj się programowania Olafur !! :) – Vidar

Odpowiedz

9

Uzyskiwanie informacji z Drukarki za pomocą System.Management jest stosunkowo łatwe.

//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 
    } 

Spójrz na http://msdn.microsoft.com/en-us/library/aa394363.aspx dla metod i właściwości Win32_Printer. Na twoje pytanie:

//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 
} 
Powiązane problemy