C#擷取印表機狀態

來源:互聯網
上載者:User
public static string GetPrinterStatus(string PrinterName)    {    int intValue = GetPrinterStatusInt(PrinterName);    string strRet = string.Empty;    switch (intValue)    {    case 0:    strRet = "準備就緒(Ready)";    break;    case 0x00000200:    strRet = "忙(Busy)";    break;    case 0x00400000:    strRet = "被開啟(Printer Door Open)";    break;    case 0x00000002:    strRet = "錯誤(Printer Error)";    break;    case 0x0008000:    strRet = "初始化(Initializing)";    break;    case 0x00000100:    strRet = "正在輸入,輸出(I/O Active)";    break;    case 0x00000020:    strRet = "手工送紙(Manual Feed)";    break;    case 0x00040000:    strRet = "無墨粉(No Toner)";    break;    case 0x00001000:    strRet = "不可用(Not Available)";    break;    case 0x00000080:    strRet = "離線(Off Line)";    break;    case 0x00200000:    strRet = "記憶體溢出(Out of Memory)";    break;    case 0x00000800:    strRet = "輸出口已滿(Output Bin Full)";    break;    case 0x00080000:    strRet = "當前頁無法列印(Page Punt)";    break;    case 0x00000008:    strRet = "塞紙(Paper Jam)";    break;    case 0x00000010:    strRet = "列印紙用完(Paper Out)";    break;    case 0x00000040:    strRet = "紙張問題(Page Problem)";    break;    case 0x00000001:    strRet = "暫停(Paused)";    break;    case 0x00000004:    strRet = "正在刪除(Pending Deletion)";    break;    case 0x00000400:    strRet = "正在列印(Printing)";    break;    case 0x00004000:    strRet = "正在處理(Processing)";    break;    case 0x00020000:    strRet = "墨粉不足(Toner Low)";    break;    case 0x00100000:    strRet = "需要使用者幹預(User Intervention)";    break;    case 0x20000000:    strRet = "等待(Waiting)";    break;    case 0x00010000:    strRet = "熱機中(Warming Up)";    break;    default:    strRet = "未知狀態(Unknown Status)";    break;    }    return strRet;   }   internal static int GetPrinterStatusInt(string PrinterName)    {    int intRet = 0;    IntPtr hPrinter;    structPrinterDefaults defaults = new structPrinterDefaults();      if (OpenPrinter(PrinterName, out hPrinter, ref defaults))    {    int cbNeeded = 0;    bool bolRet = GetPrinter(hPrinter, 2, IntPtr.Zero, 0, out cbNeeded);    if (cbNeeded > 0)    {    IntPtr pAddr = Marshal.AllocHGlobal((int)cbNeeded);    bolRet = GetPrinter(hPrinter, 2, pAddr, cbNeeded, out cbNeeded);    if (bolRet)    {    PRINTER_INFO_2 Info2 = new PRINTER_INFO_2();        Info2 = (PRINTER_INFO_2)Marshal.PtrToStructure(pAddr, typeof(PRINTER_INFO_2));        intRet = System.Convert.ToInt32(Info2.Status);    }    Marshal.FreeHGlobal(pAddr);    }    ClosePrinter(hPrinter);    }      return intRet;    }    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]    internal struct structPrinterDefaults    {    [MarshalAs(UnmanagedType.LPTStr)]    public String pDatatype;    public IntPtr pDevMode;    [MarshalAs(UnmanagedType.I4)]    public int DesiredAccess;    };  狀態枚舉[FlagsAttribute]    internal enum PrinterStatus    {    PRINTER_STATUS_BUSY = 0x00000200,    PRINTER_STATUS_DOOR_OPEN = 0x00400000,    PRINTER_STATUS_ERROR = 0x00000002,    PRINTER_STATUS_INITIALIZING = 0x00008000,    PRINTER_STATUS_IO_ACTIVE = 0x00000100,    PRINTER_STATUS_MANUAL_FEED = 0x00000020,    PRINTER_STATUS_NO_TONER = 0x00040000,    PRINTER_STATUS_NOT_AVAILABLE = 0x00001000,    PRINTER_STATUS_OFFLINE = 0x00000080,    PRINTER_STATUS_OUT_OF_MEMORY = 0x00200000,    PRINTER_STATUS_OUTPUT_BIN_FULL = 0x00000800,    PRINTER_STATUS_PAGE_PUNT = 0x00080000,    PRINTER_STATUS_PAPER_JAM = 0x00000008,    PRINTER_STATUS_PAPER_OUT = 0x00000010,    PRINTER_STATUS_PAPER_PROBLEM = 0x00000040,    PRINTER_STATUS_PAUSED = 0x00000001,    PRINTER_STATUS_PENDING_DELETION = 0x00000004,    PRINTER_STATUS_PRINTING = 0x00000400,    PRINTER_STATUS_PROCESSING = 0x00004000,    PRINTER_STATUS_TONER_LOW = 0x00020000,    PRINTER_STATUS_USER_INTERVENTION = 0x00100000,    PRINTER_STATUS_WAITING = 0x20000000,    PRINTER_STATUS_WARMING_UP = 0x00010000    }  

  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.