Partager via


Comment : cloner une imprimante

La plupart des entreprises achèteront, à un moment donné, plusieurs imprimantes du même modèle. En règle générale, ils sont tous installés avec des paramètres de configuration pratiquement identiques. L’installation de chaque imprimante peut prendre du temps et entraîner des erreurs. L’espace System.Printing.IndexedProperties de noms et la InstallPrintQueue classe exposés avec Microsoft .NET Framework permettent d’installer instantanément un nombre quelconque de files d’attente d’impression supplémentaires clonées à partir d’une file d’attente d’impression existante.

Exemple

Dans l’exemple ci-dessous, une deuxième file d’attente d’impression est cloné à partir d’une file d’attente d’impression existante. La seconde diffère du premier uniquement dans son nom, son emplacement, son port et son état partagé. Les principales étapes à suivre sont les suivantes.

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

  2. Créez une PrintPropertyDictionary à partir de l’objet PropertiesCollectionPrintQueue. La Value propriété 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 la méthode Remove et Add les méthodes du dictionnaire pour supprimer l’entrée, puis l’ajouter à nouveau avec la valeur souhaitée.

    • Utilisez la méthode du SetProperty dictionnaire.

    L’exemple ci-dessous illustre les deux façons.

  3. Créez un PrintBooleanProperty objet et définissez-le Name sur « IsShared » et sur Valuetrue.

  4. Utilisez l’objet PrintBooleanProperty pour être la valeur de l’entrée PrintPropertyDictionary« IsShared ».

  5. Créez un PrintStringProperty objet et définissez-le Name sur « ShareName » et son Value sur un objet approprié String.

  6. Utilisez l’objet PrintStringProperty pour être la valeur de l’entrée PrintPropertyDictionary« ShareName ».

  7. Créez un autre PrintStringProperty objet et définissez-le Name sur « Location » et son Value sur un objet approprié String.

  8. Utilisez le deuxième PrintStringProperty objet pour être la valeur de l’entrée PrintPropertyDictionary« Location ».

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

  10. Permet InstallPrintQueue d’installer la nouvelle imprimante avec les nouvelles valeurs.

En 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();
Dim myLocalPrintServer As New LocalPrintServer(PrintSystemDesiredAccess.AdministrateServer)
Dim sourcePrintQueue As PrintQueue = myLocalPrintServer.DefaultPrintQueue
Dim myPrintProperties As PrintPropertyDictionary = sourcePrintQueue.PropertiesCollection

' Share the new printer using Remove/Add methods
Dim [shared] As New PrintBooleanProperty("IsShared", True)
myPrintProperties.Remove("IsShared")
myPrintProperties.Add("IsShared", [shared])

' Give the new printer its share name using SetProperty method
Dim theShareName As New PrintStringProperty("ShareName", """Son of " & sourcePrintQueue.Name & """")
myPrintProperties.SetProperty("ShareName", theShareName)

' Specify the physical location of the new printer using Remove/Add methods
Dim theLocation As New PrintStringProperty("Location", "the supply room")
myPrintProperties.Remove("Location")
myPrintProperties.Add("Location", theLocation)

' Specify the port for the new printer
Dim port() As String = { "COM1:" }


' Install the new printer on the local print server
Dim clonedPrinter As PrintQueue = 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