直接印刷しないプリンターのリストが必要です。直接印刷できるリストを取得するのはかなり簡単に思えます。しかし、その逆をどうするか。
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)
PrintServer.GetPrintQueues メソッド
MSDN によると、EnumeratedPrintQueueTypes には、メンバー値のビット単位の組み合わせを可能にする FlagsAttribute 属性があります。なので、NOT direct を何とか指定できるはずです。どうすればいいのですか?
私はこれをやろうとしましarrFlags(0) = Not System.Printing.EnumeratedPrintQueueTypes.DirectPrintingたが、結果は返されませんでした。明らかに間違っています。
では、flags 属性を操作して、直接印刷するすべてのプリンターを排除するにはどうすればよいでしょうか。