Comment : énumérer un sous-ensemble de files d'attente à l'impression
Mise à jour : novembre 2007
Les professionnels de l'informatique qui gèrent des parcs d'imprimantes à l'échelle de l'entreprise sont souvent amenés à générer une liste des imprimantes dotées de certaines caractéristiques. Cette fonctionnalité est fournie par la méthode GetPrintQueues d'un objet PrintServer et l'énumération EnumeratedPrintQueueTypes.
Exemple
Dans l'exemple suivant, le code commence par créer un tableau d'indicateurs qui spécifient les caractéristiques des files d'attente à l'impression à répertorier. Dans cet exemple, nous recherchons les files d'attente à l'impression qui sont installées localement sur le serveur d'impression et partagées. L'énumération EnumeratedPrintQueueTypes offre de nombreuses autres possibilités.
Le code crée ensuite un objet LocalPrintServer, une classe dérivée de PrintServer. Le serveur d'impression local est l'ordinateur sur lequel s'exécute l'application.
La dernière étape importante consiste à passer le tableau à la méthode GetPrintQueues.
Enfin, les résultats sont présentés à l'utilisateur.
// Specify that the list will contain only the print queues that are installed as local and are shared
EnumeratedPrintQueueTypes[] enumerationFlags = {EnumeratedPrintQueueTypes.Local,
EnumeratedPrintQueueTypes.Shared};
LocalPrintServer printServer = new LocalPrintServer();
//Use the enumerationFlags to filter out unwanted print queues
PrintQueueCollection printQueuesOnLocalServer = printServer.GetPrintQueues(enumerationFlags);
Console.WriteLine("These are your shared, local print queues:\n\n");
foreach (PrintQueue printer in printQueuesOnLocalServer)
{
Console.WriteLine("\tThe shared printer " + printer.Name + " is located at " + printer.Location + "\n");
}
Console.WriteLine("Press enter to continue.");
Console.ReadLine();
// Specify that the list will contain only the print queues that are installed as local and are shared
array<System::Printing::EnumeratedPrintQueueTypes>^ enumerationFlags = {EnumeratedPrintQueueTypes::Local,EnumeratedPrintQueueTypes::Shared};
LocalPrintServer^ printServer = gcnew LocalPrintServer();
//Use the enumerationFlags to filter out unwanted print queues
PrintQueueCollection^ printQueuesOnLocalServer = printServer->GetPrintQueues(enumerationFlags);
Console::WriteLine("These are your shared, local print queues:\n\n");
for each (PrintQueue^ printer in printQueuesOnLocalServer)
{
Console::WriteLine("\tThe shared printer " + printer->Name + " is located at " + printer->Location + "\n");
}
Console::WriteLine("Press enter to continue.");
Console::ReadLine();
Vous pouvez étendre cet exemple en faisant en sorte que la boucle foreach qui parcourt chaque file d'attente à l'impression effectue un filtrage supplémentaire. Par exemple, vous pourriez filtrer les imprimantes qui ne prennent pas en charge l'impression recto-verso en demandant à la boucle d'appeler la méthode GetPrintCapabilities de chaque file d'attente à l'impression et de vérifier si la valeur retournée indique la présence de l'impression recto-verso. Pour obtenir un exemple, consultez Création d'un document XPS, exemple.
Voir aussi
Concepts
Documents dans Windows Presentation Foundation
Vue d'ensemble de l'impression