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;
        }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容