C# to find JobId, Owner, TotalPages from Printer
- by tanthiamhuat
My below code works when the Form loads and I can get a list of Network Printers in listBox1.
I am also able to see a specific printer's property name and value in listBox2.
private void Form1_Load(object sender, EventArgs e)
{
foreach (String printer in PrinterSettings.InstalledPrinters)
{
listBox1.Items.Add(printer.ToString());
}
}
private void button1_Click(object sender, EventArgs e)
{
string printerName = "Ricoh-L4-1";
string query = string.Format("SELECT * from Win32_Printer WHERE Name LIKE '%{0}'", printerName);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection coll = searcher.Get();
foreach (ManagementObject printer in coll)
{
foreach (PropertyData property in printer.Properties)
{
listBox2.Items.Add(string.Format("{0}: {1}", property.Name, property.Value));
}
}
}
But when I try to find JobId, Owner, TotalPages for a particular printer (when I actually send jobs to print to that printer), those values do not display at all.
private void button2_Click(object sender, EventArgs e)
{
listBox2.Items.Clear();
string printerName = "Ricoh-L4-1";
string query = string.Format("SELECT * from Win32_PrintJob WHERE Name LIKE '%{0}'", printerName);
ManagementObjectSearcher SearchPrintJobs = new ManagementObjectSearcher(query);
ManagementObjectCollection PrntJobCollection = SearchPrintJobs.Get();
foreach (ManagementObject PrntJob in PrntJobCollection)
{
string m_JobID = PrntJob.Properties["JobId"].Value.ToString();
string m_Owner = PrntJob.Properties["Owner"].Value.ToString();
string m_TotalPages = PrntJob.Properties["TotalPages"].Value.ToString();
listBox2.Items.Add(string.Format("{0}:{1}:{2}", m_JobID,m_Owner,m_TotalPages));
}
}
Do you have any idea how to get above to work? thanks in advance.