Delen via


Procedure: Een printer klonen

De meeste bedrijven kopen op een bepaald moment meerdere printers van hetzelfde model. Normaal gesproken worden deze allemaal geïnstalleerd met vrijwel identieke configuratie-instellingen. Het installeren van elke printer kan tijdrovend en foutgevoelig zijn. De System.Printing.IndexedProperties-naamruimte en de InstallPrintQueue-klasse die worden weergegeven met Microsoft .NET Framework, maakt het mogelijk om direct een willekeurig aantal extra afdrukwachtrijen te installeren die zijn gekloond uit een bestaande afdrukwachtrij.

Voorbeeld

In het onderstaande voorbeeld wordt een tweede afdrukwachtrij gekloond uit een bestaande afdrukwachtrij. De tweede verschilt van de eerste alleen in de naam, locatie, poort en gedeelde status. De belangrijkste stappen hiervoor zijn als volgt.

  1. Maak een PrintQueue-object voor de bestaande printer die wordt gekloond.

  2. Maak een PrintPropertyDictionary op basis van de PropertiesCollection van de PrintQueue. De eigenschap Value van elke vermelding in deze woordenlijst is een object van een van de typen die zijn afgeleid van PrintProperty. Er zijn twee manieren om de waarde van een item in deze woordenlijst in te stellen.

    • Gebruik de Verwijder en Add methoden van de woordenlijst om de vermelding te verwijderen en voeg deze vervolgens opnieuw toe met de gewenste waarde.

    • Gebruik de SetProperty-methode van het woordenboek.

    In het onderstaande voorbeeld ziet u beide manieren.

  3. Maak een PrintBooleanProperty-object en stel de bijbehorende Name in op 'IsShared' en de bijbehorende Value op true.

  4. Gebruik het PrintBooleanProperty-object als de waarde voor de 'IsShared'-vermelding van PrintPropertyDictionary.

  5. Maak een PrintStringProperty-object en stel de bijbehorende Name in op 'ShareName' en de bijbehorende Value op een geschikte String.

  6. Gebruik het PrintStringProperty-object als waarde voor de 'ShareName'-vermelding van de PrintPropertyDictionary.

  7. Maak een ander PrintStringProperty-object en stel de bijbehorende Name in op 'Locatie' en de bijbehorende Value op een geschikte String.

  8. Gebruik het tweede PrintStringProperty-object als de waarde van de vermelding "Locatie" van PrintPropertyDictionary.

  9. Maak een matrix van Strings. Elk item is de naam van een poort op de server.

  10. Gebruik InstallPrintQueue om de nieuwe printer te installeren met de nieuwe waarden.

Hieronder ziet u een voorbeeld.

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()

Zie ook