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

Référence

GetPrintQueues

PrintServer

LocalPrintServer

EnumeratedPrintQueueTypes

PrintQueue

GetPrintCapabilities

Autres ressources

Exemples d'impression

Microsoft XPS Document Writer