Freigeben über


Gewusst wie: Klonen eines Druckers

Die meisten Unternehmen werden irgendwann mehrere Drucker desselben Modells kaufen. In der Regel werden diese alle mit nahezu identischen Konfigurationseinstellungen installiert. Die Installation jedes Druckers kann zeitaufwendig und fehleranfällig sein. Der System.Printing.IndexedProperties-Namespace und die InstallPrintQueue Klasse, die mit Microsoft .NET Framework verfügbar gemacht werden, ermöglicht es, sofort eine beliebige Anzahl zusätzlicher Druckwarteschlangen zu installieren, die aus einer vorhandenen Druckwarteschlange geklont werden.

Beispiel

Im folgenden Beispiel wird eine zweite Druckwarteschlange von einer vorhandenen Druckwarteschlange geklont. Die zweite unterscheidet sich von der ersten nur hinsichtlich Name, Ort, Port und Freigabestatus. Die wichtigsten Schritte hierfür sind wie folgt.

  1. Erstellen Sie ein PrintQueue-Objekt für den vorhandenen Drucker, der geklont werden soll.

  2. Erstellen Sie ein PrintPropertyDictionary aus der PropertiesCollection der PrintQueue. Die Value-Eigenschaft jedes Eintrags in diesem Wörterbuch ist ein Objekt eines der Typen, die von PrintProperty abgeleitet werden. Es gibt zwei Möglichkeiten, den Wert eines Eintrags in diesem Wörterbuch festzulegen.

    • Verwenden Sie die Methoden Remove und Add des Wörterbuchs, um den Eintrag zu entfernen und dann mit dem gewünschten Wert erneut hinzuzufügen.

    • Verwenden Sie die SetProperty-Methode des Wörterbuchs.

    Das folgende Beispiel veranschaulicht beide Möglichkeiten.

  3. Erstellen Sie ein PrintBooleanProperty-Objekt, und legen Sie dessen Name auf "IsShared" und dessen Value auf truefest.

  4. Verwenden Sie das PrintBooleanProperty-Objekt als Wert des Eintrags „IsShared“ von PrintPropertyDictionary.

  5. Erstellen Sie ein PrintStringProperty-Objekt, und legen Sie seinen Name auf „ShareName“ und seinen Value auf eine entsprechende String fest.

  6. Verwenden Sie das PrintStringProperty-Objekt als Wert des Eintrags „ShareName“ von PrintPropertyDictionary.

  7. Erstellen Sie ein weiteres PrintStringProperty-Objekt, und legen Sie seinen Name auf „Location“ (Standort) und seinen Value auf eine entsprechende String fest.

  8. Verwenden Sie das zweite PrintStringProperty-Objekt als Wert des Eintrags „Location“ von PrintPropertyDictionary.

  9. Erstellen Sie ein Array von mehreren String. Jedes Element ist der Name eines Ports auf dem Server.

  10. Verwenden Sie InstallPrintQueue, um den neuen Drucker mit den neuen Werten zu installieren.

Nachfolgend finden Sie ein Beispiel.

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

Siehe auch