zoukankan      html  css  js  c++  java
  • c# 获取和取消本地打印队列

    Dictionary<string, int> GetAllPrinterQueues()
    {
        RaiseLog(
    "Getting print queue counts");
        Dictionary
    <string, int> TempDict =new Dictionary<string, int>();

        PrintServer myPrintServer
    =new PrintServer(); // Get all the printers installed on this PC

       
    // List the print server's queues
        PrintQueueCollection myPrintQueues = myPrintServer.GetPrintQueues();
        String printQueueNames
    ="My Print Queues:\n\n";
       
    foreach (PrintQueue pq in myPrintQueues)
        {
            Saint.StCommon.Wait((
    decimal)2000); // 2 seconds of "Application.DoEvents(), not thread sleep
            if (GotPingBack(pq.Name))
            {
               
    int PGcount =0;
               
    try
                {
                   
    if (pq.NumberOfJobs >0)
                    {
                       
    // We know there are jobs.  So we *have* to be able to get the collection at some point
                        DateTime Bailout = DateTime.Now.AddSeconds(10); // Keep trying for 10 seconds or until I get a valid response
                        string ErrMsg ="notyetretreived";
                       
    while (Bailout > DateTime.Now && ErrMsg !=string.Empty)
                        {
                           
    try
                            {
                               
    var Jobs = pq.GetPrintJobInfoCollection();
                                Saint.StCommon.Wait((
    int)2);
                               
    foreach (PrintSystemJobInfo Job in Jobs)
                                {
                                    PGcount
    += Job.NumberOfPages;
                                    ErrMsg
    =string.Empty;
                                }
                            }
                           
    catch (Exception k)
                            {
                                ErrMsg
    = k.Message;
                                Console.WriteLine(
    string.Format("{0}: {1}", pq.Name, k.Message));
                            }
                        }
                    }
                }
               
    catch
                {
                    Console.WriteLine(
    "Exception dork");
                }
                Console.WriteLine(
    string.Format("{2}\t{0}\t{1}", pq.Name, PGcount, DateTime.Now.ToString("HH:mm:ss.fff")));
                TempDict.Add(pq.Name, PGcount);
            }
        }
       
    return TempDict;
    }


    publicbool CancelPrintJob(int printJobID)
    {
       
    // Variable declarations.           
        bool isActionPerformed =false;           
       
    string searchQuery;           
        String jobName;           
       
    char[] splitArr;           
       
    int prntJobID;           
        ManagementObjectSearcher searchPrintJobs;           
        ManagementObjectCollection prntJobCollection;           
       
    try           
        {               
           
    // Query to get all the queued printer jobs.               
            searchQuery ="SELECT * FROM Win32_PrintJob";               
           
    // Create an object using the above query.               
            searchPrintJobs =new ManagementObjectSearcher(searchQuery);               
           
    // Fire the query to get the collection of the printer jobs.               
            prntJobCollection = searchPrintJobs.Get();               
           
    // Look for the job you want to delete/cancel.               
            foreach (ManagementObject prntJob in prntJobCollection)
            {                   
                jobName
    = prntJob.Properties["Name"].Value.ToString();                   
               
    // Job name would be of the format [Printer name], [Job ID]                   
                splitArr =newchar[1];                   
                splitArr[
    0] = Convert.ToChar(",");                   
               
    // Get the job ID.                   
                prntJobID = Convert.ToInt32(jobName.Split(splitArr)[1]);                   
               
    // If the Job Id equals the input job Id, then cancel the job.                   
                if (prntJobID == printJobID)                   
                {                       
                   
    // Performs a action similar to the cancel                       
                   
    // operation of windows print console                       
                    prntJob.Delete();                       
                    isActionPerformed
    =true;                       
                   
    break;                   
                }               
            }               
           
    return isActionPerformed;           
        }           
       
    catch (Exception sysException)           
        {               
           
    // Log the exception.               
            returnfalse;           
        }       
    }

  • 相关阅读:
    打酱油
    一个在线演示代码运行的网站
    java数据结构之枚举
    tomcat ; nginx ;mysql
    restful demo 演示; jquery min1.1;
    rest规范 ; restful 风格; gradel介绍 ; idea安装 ;
    jetty;tomcat;热部署
    web容器 web服务器 servlet/jsp容器 之间的区别和关系是什么?
    jetty;linux 目录结构
    servlet;jsp;cookies;session
  • 原文地址:https://www.cnblogs.com/xm_cpppp/p/2060218.html
Copyright © 2011-2022 走看看