방법: 프린터 복제
대부분의 비즈니스는 특정 시점에 동일한 모델의 프린터 여러 대를 구매합니다. 일반적으로 이 프린터는 모두 실제로 동일한 구성 설정으로 설치됩니다. 각 프린터를 설치하는 데 시간이 걸리고 오류가 발생하기 쉽습니다. Microsoft .NET Framework를 통해 노출되는 System.Printing.IndexedProperties 네임스페이스와 InstallPrintQueue 클래스를 사용하면 기존 인쇄 큐에서 복제되는 추가 인쇄 큐를 제한 없이 즉시 설치할 수 있습니다.
예제
아래 예제에서 두 번째 인쇄 큐는 기존 인쇄 큐에서 복제됩니다. 두 번째는 이름, 위치, 포트, 공유 상태만 첫 번째와 다릅니다. 이 작업을 수행하는 주요 단계는 다음과 같습니다.
복제할 기존 프린터에 대한 PrintQueue 개체를 만듭니다.
PrintQueue의 PropertiesCollection에서 PrintPropertyDictionary를 만듭니다. 이 사전에 있는 각 항목의 Value 속성은 PrintProperty에서 파생된 형식 중 하나의 개체입니다. 이 사전에서 항목의 값을 설정하는 방법에는 두 가지가 있습니다.
사전의 Remove 및 Add 메서드를 사용하여 항목을 제거한 다음, 원하는 값을 사용하여 다시 추가합니다.
사전의 SetProperty 메서드를 사용합니다.
아래 예제에서는 두 가지 방법을 모두 보여 줍니다.
PrintBooleanProperty 개체를 만들고 해당 Name을 “IsShared”로 설정하고 Value를
true
로 설정합니다.PrintBooleanProperty 개체를 PrintPropertyDictionary의 “IsShared” 항목 값으로 사용합니다.
PrintStringProperty 개체를 만들고 해당 Name을 “ShareName”으로 설정하고 해당 Value를 적절한 String으로 설정합니다.
PrintStringProperty 개체를 PrintPropertyDictionary의 “ShareName” 항목 값으로 사용합니다.
또 다른 PrintStringProperty 개체를 만들고 해당 Name을 “Location”으로 설정하고 해당 Value를 적절한 String으로 설정합니다.
두 번째 PrintStringProperty 개체를 PrintPropertyDictionary의 ‘Location’ 항목 값으로 사용합니다.
String 배열을 만듭니다. 각 항목은 서버의 포트 이름입니다.
InstallPrintQueue를 사용하여 새 값으로 새 프린터를 설치합니다.
예를 들면 다음과 같습니다.
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()
참고 항목
.NET Desktop feedback