Ricerca di stampanti installate con l'attività ScriptFinding Installed Printers with the Script Task

La destinazione finale dei dati trasformati dai pacchetti Integration ServicesIntegration Services è spesso costituita da un report stampato.The data that is transformed by Integration ServicesIntegration Services packages often has a printed report as its final destination. Lo spazio dei nomi System.Drawing.Printing in MicrosoftMicrosoft .NET Framework.NET Framework fornisce le classi da usare con le stampanti.The System.Drawing.Printing namespace in the MicrosoftMicrosoft .NET Framework.NET Framework provides classes for working with printers.

Nota

Se si desidera creare un'attività da riutilizzare più facilmente con più pacchetti, è possibile utilizzare il codice di questo esempio di attività Script come punto iniziale per un'attività personalizzata.If you want to create a task that you can more easily reuse across multiple packages, consider using the code in this Script task sample as the starting point for a custom task. Per altre informazioni, vedere Sviluppo di un'attività personalizzata.For more information, see Developing a Custom Task.

DescriptionDescription

Nell'esempio seguente vengono individuate le stampanti installate nel server che supportano carta in formato Legal (utilizzato negli Stati Uniti).The following example locates printers installed on the server that support legal size paper (as used in the United States). Il codice per controllare i formati della carta supportati è incapsulato in una funzione privata.The code to check supported paper sizes is encapsulated in a private function. Per consentire di tenere traccia del proprio stato mentre controlla le impostazioni per ogni stampante, lo script utilizza il metodo Log per generare un messaggio informativo per le stampanti con formato della carta Legal e un avviso per le stampanti senza questo formato.To enable you to track the progress of the script as it checks the settings for each printer, the script uses the Log method to raise an informational message for printers with legal size paper, and to raise a warning for printers without legal size paper. Questi messaggi vengono visualizzati nella finestra Output dell'IDE di MicrosoftMicrosoft Visual StudioVisual Studio Tools for Applications (VSTA) quando si esegue il pacchetto nella finestra di progettazione.These messages appear in the Output window of the MicrosoftMicrosoft Visual StudioVisual Studio Tools for Applications (VSTA) IDE when you run the package in the designer.

Per configurare l'esempio di attività ScriptTo configure this Script Task example

  1. Creare la variabile denominata PrinterList con tipo Object.Create the variable named PrinterList with type Object.

  2. Nella pagina Script dell'Editor attività Script questa variabile alla proprietà ReadWriteVariables.On the Script page of the Script Task Editor, add this variable to the ReadWriteVariables property.

  3. Nel progetto di script aggiungere un riferimento allo spazio dei nomi System.Drawing.In the script project, add a reference to the System.Drawing namespace.

  4. Nel codice usare le istruzioni Imports per importare gli spazi dei nomi System.Collections e System.Drawing.Printing.In your code, use Imports statements to import the System.Collections and the System.Drawing.Printing namespaces.

codiceCode

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;  

        }  

Vedere ancheSee Also

Esempi di attività ScriptScript Task Examples