不包括离线重定向的打印机

时间:2019-06-25 11:32:24

标签: c#

我遇到一种情况,尽管打印机处于脱机状态,但重定向的打印机在远程桌面会话上显示为可用打印机。 我想知道是否可以使用C#编码来确定重定向的打印机是脱机还是在线。 我需要排除所有脱机打印机。 如果直接将打印机安装在远程桌面计算机上,则可以确定打印机状态,但是如果使用了远程桌面繁忙的打印驱动程序,则该状态不可用。

我一直在使用System.Printing类来确定这一点,到目前为止,我还没有运气。 我也尝试过WMI。

[DllImport("winspool.drv", CharSet = CharSet.Unicode,EntryPoint="EnumPrinters", SetLastError = true)]
static extern int Win32EnumPrinters(int Flags, string Name, uint Level, IntPtr pPrinterEnum, uint cbBuf,ref uint pcbNeeded, ref uint pcReturned);

PrintServer ps = new PrintServer(PrintSystemDesiredAccess.AdministrateServer);
PrintQueueCollection pq = ps.GetPrintQueues();

foreach (PrintQueue printQueue in pq)
{
      printQueue.Refresh();
     //System.Windows.Forms.MessageBox.Show(printQueue.Name+" "+printQueue.IsOutOfPaper + " : Status : "+ printQueue.QueueStatus);
      SpotTroubleUsingProperties(ref statusReport, printQueue);  
}

0 个答案:

没有答案