Vb.net 如何获取不直接打印的打印机列表?

Vb.net 如何获取不直接打印的打印机列表?,vb.net,bitflags,Vb.net,Bitflags,我需要一个不直接打印的打印机列表。获得一份直接打印的列表似乎相当容易。但如何做相反的事情呢 Dim PrintServer As New SysPrint.PrintServer Dim arrFlags(0) As SysPrint.EnumeratedPrintQueueTypes arrFlags(0) = System.Printing.EnumeratedPrintQueueTypes.DirectPrinting Dim QColl As SysPri

我需要一个不直接打印的打印机列表。获得一份直接打印的列表似乎相当容易。但如何做相反的事情呢

    Dim PrintServer As New SysPrint.PrintServer
    Dim arrFlags(0) As SysPrint.EnumeratedPrintQueueTypes
    arrFlags(0) = System.Printing.EnumeratedPrintQueueTypes.DirectPrinting
    Dim QColl As SysPrint.PrintQueueCollection = PrintServer.GetPrintQueues(arrFlags)

MSDN说EnumeratedPrintQueueTypes有一个FlagsAttribute属性,允许其成员值按位组合。因此,我应该能够以某种方式指定NOT direct。我该怎么做

我尝试执行此操作
arrfags(0)=而不是System.Printing.EnumeratedPrintQueueTypes.DirectPrinting
,但没有返回任何结果。显然不正确


那么,如何操作flags属性以消除所有直接打印的打印机?

这是一种方法,但似乎非常不雅观:

    'get full list
    Dim PrintServer As New SysPrint.PrintServer
    Dim QColl As SysPrint.PrintQueueCollection = PrintServer.GetPrintQueues()

    'get those not printing direct 
    Dim Qcoll2 As List(Of SysPrint.PrintQueue) = QColl.Where(Function(x) Not (x.IsDirect)).ToList

    'select name only
    Dim strList As List(Of String) = Qcoll2.Select(Function(x) x.Name).ToList