Znajdowanie zainstalowane drukarki z zadaniem skryptów
Dane, które jest przekształcana przez Integration Services pakiety ma często wydrukowany raport jako jego ostatecznego obiekt docelowy. The System.Drawing.Printing namespace in the Microsoft .NET Framework provides classes for working with printers.
Uwaga
Jeśli chcesz utworzyć zadanie, które łatwo można używać w wielu pakietów, należy rozważyć przy użyciu kodu w tym przykładzie skrypt zadanie jako punkt początkowy dla niestandardowego zadania.Aby uzyskać więcej informacji zobaczOpracowywania niestandardowego zadania.
Description
W poniższym przykładzie lokalizuje drukarek zainstalowanych na serwerze, które obsługują prawne rozmiar papieru (tak jak w Stanach Zjednoczonych).Kod, aby sprawdzić, czy rozmiary papieru obsługiwane są hermetyzowane w funkcja prywatnych.Aby umożliwić śledzenie postępów skrypt, sprawdza ustawienia dla każdej drukarki, skrypt użyje Log(String, Int32, array<Byte[]) metoda podnoszenia komunikat informacyjny dla drukarek z papier o rozmiarze prawnych i podnieść ostrzeżenie w przypadku drukarek bez prawne rozmiar papieru. These messages appear in the Output window of the Microsoft Visual Studio Tools for Applications (VSTA) IDE when you run the package in the designer.
Aby skonfigurować ten przykład zadania skryptu
Tworzenie zmiennej o nazwie PrinterList z typem Object.
Na Skrypt stronaEdytor zadań skryptu, dodanie tej zmiennej do ReadWriteVariables Właściwość.
W projekcie skryptu Dodaj odwołanie do System.Drawing obszar nazw.
W kodzie należy użyć Imports instrukcje, aby zaimportować System.Collections and the System.Drawing.Printing obszarów nazw.
Code
Public Sub Main()
Dim printerName As String
Dim currentPrinter As New PrinterSettings
Dim size As PaperSize
Dim printerList As New ArrayList
For Each printerName In PrinterSettings.InstalledPrinters
currentPrinter.PrinterName = printerName
If PrinterHasLegalPaper(currentPrinter) Then
printerList.Add(printerName)
Dts.Events.FireInformation(0, "Example", _
"Printer " & printerName & " has legal paper.", _
String.Empty, 0, False)
Else
Dts.Events.FireWarning(0, "Example", _
"Printer " & printerName & " DOES NOT have legal paper.", _
String.Empty, 0)
End If
Next
Dts.Variables("PrinterList").Value = printerList
Dts.TaskResult = ScriptResults.Success
End Sub
Private Function PrinterHasLegalPaper( _
ByVal thisPrinter As PrinterSettings) As Boolean
Dim size As PaperSize
Dim hasLegal As Boolean = False
For Each size In thisPrinter.PaperSizes
If size.Kind = PaperKind.Legal Then
hasLegal = True
End If
Next
Return hasLegal
End Function
public void Main()
{
PrinterSettings currentPrinter = new PrinterSettings();
PaperSize size;
Boolean Flag = false;
ArrayList printerList = new ArrayList();
foreach (string printerName in PrinterSettings.InstalledPrinters)
{
currentPrinter.PrinterName = printerName;
if (PrinterHasLegalPaper(currentPrinter))
{
printerList.Add(printerName);
Dts.Events.FireInformation(0, "Example", "Printer " + printerName + " has legal paper.", String.Empty, 0, ref Flag);
}
else
{
Dts.Events.FireWarning(0, "Example", "Printer " + printerName + " DOES NOT have legal paper.", String.Empty, 0);
}
}
Dts.Variables["PrinterList"].Value = printerList;
Dts.TaskResult = (int)ScriptResults.Success;
}
private bool PrinterHasLegalPaper(PrinterSettings thisPrinter)
{
bool hasLegal = false;
foreach (PaperSize size in thisPrinter.PaperSizes)
{
if (size.Kind == PaperKind.Legal)
{
hasLegal = true;
}
}
return hasLegal;
}
|