2010-05-06 4 views
5

jestem w stanie uzyskać listę drukarek sieciowych za pomocą tego kodu:C# Network Printing

private void Form1_Load(object sender, EventArgs e) 
{ 
    foreach (String printer in PrinterSettings.InstalledPrinters) 
    { 
    listBox1.Items.Add(printer.ToString()); 
    } 
} 

dla każdej drukarki sieciowej, chcę wydobyć więcej informacji, takich jak: (a) uzyskać informacje o dokumencie, podobnie jak liczba wydrukowanych stron, nazwa pliku, rozmiar pliku itp.

(b) uzyskać adres IP komputera, z którego wydrukowano dokument.

(c) uzyskać nazwę użytkownika, kto wydrukował dokument.

Jak mogę to osiągnąć? należy docenić dowolne próbki kodu. Czy muszę zaglądać do plików Windows Management Instrumentation (WMI)?

Odpowiedz

0

tak, jestem w stanie uzyskać wszystkie właściwości i wartości z WMI z Win32_Printer za pomocą poniższego kodu, ale mogłem nie pobierać podstawowych informacji, takich jak: (a) uzyskać informacje o dokumencie, takie jak liczba wydrukowanych stron, nazwa pliku, rozmiar pliku itp. (b) uzyskać adres IP komputera, z którego wydrukowano dokument. (c) uzyskać nazwę użytkownika, który wydrukował dokument.

Kod:

private void button1_Click (object sender, EventArgs e) { ciąg printername = "Ricoh-L4-1"; string query = string.Format ("SELECT * from Win32_Printer WHERE Name LIKE"% {0} '", nazwa drukarki); Wykrywacz ManagementObjectSearcher = new ManagementObjectSearcher (zapytanie); ManagementObjectCollection coll = searcher.Get();

 foreach (ManagementObject printer in coll) 
     { 
      foreach (PropertyData property in printer.Properties) 
      { 
       listBox1.Items.Add(string.Format("{0}: {1}", property.Name, property.Value)); 
      } 
     } 

    }