由于this问题的帮助,我正在检索默认的打印队列。我也能够确定DefaultPrintQueue
但是如何正确确定打印队列列表中的哪个打印队列等于DefaultPrintQueue
?
我试过了:
var dq = LocalPrintServer.GetDefaultPrintQueue();
foreach(PrintQueue pq in pqcOnLocalServer)
{
if(pq.Equals(dq))
{
System.Console.WriteLine("Found default");
}
}
但这两个对象显然不会相同。然后我假设我可以将每个PrintQueue
的属性与默认值进行比较,但是应该使用哪些属性来确定两个PrintQueue
指的是PrintQueue
{100}。 ?
答案 0 :(得分:0)
尝试使用LocalPrintServer.DefaultPrintQueue
属性获取默认打印队列并比较PrintQueue.FullName。这样就无需迭代LocalPrintServer
PrintQueueCollection
。
LocalPrintServer printServer = new LocalPrintServer(PrintSystemDesiredAccess.AdministrateServer);
PrintQueue pq = printServer.DefaultPrintQueue;
PrintQueue dq = LocalPrintServer.GetDefaultPrintQueue();
if (dq != null && pq.FullName.Equals(dq.FullName))
{
Console.WriteLine("Found default print Queue: {0}", dq.FullName);
}
如果您仍需要遍历LocalPrintServer
PrintQueueCollection
,可以尝试以下实施。
LocalPrintServer printServer = new LocalPrintServer(PrintSystemDesiredAccess.AdministrateServer);
PrintQueue dq = LocalPrintServer.GetDefaultPrintQueue();
foreach (PrintQueue pq in printServer.GetPrintQueues())
{
if (dq != null && pq.FullName.Equals(dq.FullName))
{
Console.WriteLine("Found default print Queue: {0}", dq.FullName);
}
}
答案 1 :(得分:0)
这个问题可能在Expert Exchange或Server Exchange上做得很好。我发现的是,打印服务器不允许服务器上已有打印机服务器上已有名称的打印机。话虽如此,打印机每个服务器必须具有唯一的名称。
话虽如此,用户必须小心不仅要比较打印机名称以确保它们是唯一的,而且还必须比较它们所在的打印机服务器。例如,枚举连接打印机时。计算机可以连接到两个打印服务器,其中有\\PRNTSRVR1\HQ_LaserJet01
和\\PRNTSRVR2\HQ_LaserJet01
;所以检查连接的服务器也很重要。