C#使用WMI獲取打印機以及作業列表

  • 獲取打印機列表
public static StringCollection GetPrintersCollection()
        {
            StringCollection printerNameCollection = new StringCollection();
            string searchQuery = "SELECT * FROM Win32_Printer";
         ManagementObjectSearcher searchPrinters =  
            new ManagementObjectSearcher(searchQuery);  //exec WQL
         ManagementObjectCollection printerCollection = 
            searchPrinters.Get();  // get a set of object of managementobject            
         foreach (ManagementObject printer in printerCollection)
            {
            if ((bool)printer.GetPropertyValue("default") == true)  
                //judge if the current print is the default printer 
                {
                  DefaultPrinterName = printer.Properties["Name"].Value.ToString();                                        
                }  
             printerNameCollection. Add(printer.Properties["Name"].Value.ToString());  
//add to the string set                
            }
                return printerNameCollection;            
        }
  • 獲取作業列表
public static StringCollection GetPrintJobsCollection(string printerName)
        {
            StringCollection printJobCollection = new StringCollection();
            string searchQuery = "SELECT * FROM Win32_PrintJob";
            /*searchQuery can also be mentioned with where Attribute,
                but this is not working in Windows 2000 / ME / 98 machines 
                and throws Invalid query error*/
            ManagementObjectSearcher searchPrintJobs =
                      new ManagementObjectSearcher(searchQuery);
            ManagementObjectCollection prntJobCollection = searchPrintJobs.Get();
            foreach (ManagementObject prntJob in prntJobCollection)
            {
                System.String jobName = prntJob.Properties["Name"].Value.ToString();               
                //Job name would be of the format [Printer name], [Job ID]
                char[] splitArr = new char[1];
                splitArr[0] = Convert.ToChar(",");
                string prnterName = jobName.Split(splitArr)[0];
                string documentName = prntJob.Properties["Document"].Value.ToString();
                if (String.Compare(prnterName, printerName, true) == 0)
                {
                    printJobCollection.Add(documentName);
                }
            }
            return printJobCollection;
        }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容