Partager via


Comment : cloner une imprimante

Mise à jour : novembre 2007

La plupart des entreprises achètent, à un moment donné, plusieurs imprimantes du même modèle. En général, celles-ci sont toutes installées avec des paramètres de configuration quasiment identiques. L'installation de chaque imprimante peut représenter une perte de temps et constitue un risque d'erreur. L'espace de noms System.Printing.IndexedProperties et la classe InstallPrintQueue qui sont exposés avec Microsoft .NET Framework permettent d'installer instantanément n'importe quel nombre de files d'attente à l'impression supplémentaires qui sont des clones de la file d'attente à l'impression existante.

Exemple

Dans l'exemple ci-dessous, une deuxième file d'attente à l'impression est clonée d'une file d'attente à l'impression existante. Le nom, l'emplacement, le port et l'état partagé de la deuxième diffèrent de ceux de la première. Les étapes principales de cette procédure sont les suivantes.

  1. Créez un objet PrintQueue pour l'imprimante existante qui va être clonée.

  2. Créez un PrintPropertyDictionary à partir du PropertiesCollection du PrintQueue. La propriété Value de chaque entrée dans ce dictionnaire est un objet de l'un des types dérivés de PrintProperty. Il existe deux façons de définir la valeur d'une entrée dans ce dictionnaire.

    • Utilisez les méthodes Supprimer et Add du dictionnaire pour supprimer l'entrée, puis l'ajouter de nouveau avec la valeur souhaitée.

    • Utilisez la méthode SetProperty du dictionnaire.

    L'exemple suivant illustre les deux méthodes.

  3. Créez un objet PrintBooleanProperty, puis affectez « IsShared » à sa propriété Name et la valeur true à sa propriété Value.

  4. Utilisez l'objet PrintBooleanProperty en tant que valeur de l'entrée « IsShared » de PrintPropertyDictionary.

  5. Créez un objet PrintStringProperty, puis affectez la valeur « ShareName » à sa propriété Name et affectez une String appropriée à sa propriété Value.

  6. Utilisez l'objet PrintStringProperty en tant que valeur de l'entrée « ShareName » de PrintPropertyDictionary.

  7. Créez un autre objet PrintStringProperty, puis affectez la valeur « Location » à sa propriété Name et affectez une String appropriée à sa propriété Value.

  8. Utilisez le deuxième objet PrintStringProperty en tant que valeur de l'entrée « Location » de PrintPropertyDictionary.

  9. Créez un tableau de Strings. Chaque élément est le nom d'un port sur le serveur.

  10. Utilisez InstallPrintQueue pour installer la nouvelle imprimante avec les nouvelles valeurs.

Voici un exemple :

LocalPrintServer myLocalPrintServer = new LocalPrintServer(PrintSystemDesiredAccess.AdministrateServer);
PrintQueue sourcePrintQueue = myLocalPrintServer.DefaultPrintQueue;
PrintPropertyDictionary myPrintProperties = sourcePrintQueue.PropertiesCollection;

// Share the new printer using Remove/Add methods
PrintBooleanProperty shared = new PrintBooleanProperty("IsShared", true);
myPrintProperties.Remove("IsShared");
myPrintProperties.Add("IsShared", shared);

// Give the new printer its share name using SetProperty method
PrintStringProperty theShareName = new PrintStringProperty("ShareName", "\"Son of " + sourcePrintQueue.Name +"\"");
myPrintProperties.SetProperty("ShareName", theShareName);

// Specify the physical location of the new printer using Remove/Add methods
PrintStringProperty theLocation = new PrintStringProperty("Location", "the supply room");
myPrintProperties.Remove("Location");
myPrintProperties.Add("Location", theLocation);

// Specify the port for the new printer
String[] port = new String[] { "COM1:" };


// Install the new printer on the local print server
PrintQueue clonedPrinter = myLocalPrintServer.InstallPrintQueue("My clone of " + sourcePrintQueue.Name, "Xerox WCP 35 PS", port, "WinPrint", myPrintProperties);
myLocalPrintServer.Commit();

// Report outcome
Console.WriteLine("{0} in {1} has been installed and shared as {2}", clonedPrinter.Name, clonedPrinter.Location, clonedPrinter.ShareName);
Console.WriteLine("Press Return to continue ...");
Console.ReadLine();

Voir aussi

Concepts

Documents dans Windows Presentation Foundation

Vue d'ensemble de l'impression

Référence

System.Printing.IndexedProperties

PrintPropertyDictionary

LocalPrintServer

PrintQueue

DictionaryEntry

Autres ressources

Exemples d'impression