Menemukan Printer Terpasang dengan Tugas Skrip

Berlaku untuk: SQL Server (semua versi yang didukung) Integration Runtime SSIS di Azure Data Factory

Data yang diubah oleh paket Layanan Integrasi sering memiliki laporan cetak sebagai tujuan akhirnya. Namespace System.Drawing.Printing di Microsoft .NET Framework menyediakan kelas untuk bekerja dengan printer.

Catatan

Jika Anda ingin membuat tugas yang dapat digunakan kembali dengan lebih mudah di beberapa paket, pertimbangkan untuk menggunakan kode dalam sampel tugas Skrip ini sebagai titik awal untuk tugas kustom. Untuk informasi selengkapnya, lihat Mengembangkan Tugas Kustom.

Deskripsi

Contoh berikut menemukan printer yang diinstal pada server yang mendukung kertas ukuran hukum (seperti yang digunakan dalam Amerika Serikat). Kode untuk memeriksa ukuran kertas yang didukung dienkapsulasi dalam fungsi privat. Untuk memungkinkan Anda melacak kemajuan skrip saat memeriksa pengaturan untuk setiap pencetak, skrip menggunakan Log metode untuk menaikkan pesan informasi bagi printer dengan kertas ukuran hukum, dan untuk menaikkan peringatan untuk printer tanpa kertas ukuran hukum. Pesan-pesan ini muncul di jendela Output IDE Microsoft® Visual Studio® Tools for Applications (VSTA) saat Anda menjalankan paket di perancang.

Untuk mengonfigurasi contoh Tugas Skrip ini

  1. Buat variabel bernama PrinterList dengan jenis Objek.

  2. Pada halaman SkripEditor Tugas Skrip, tambahkan variabel ini ke properti ReadWriteVariables.

  3. Dalam proyek skrip, tambahkan referensi ke namespace layanan System.Drawing .

  4. Dalam kode Anda, gunakan pernyataan Impor untuk mengimpor System.Collections dan namespace System.Drawing.Printing .

Kode

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;  
  
        }  

Lihat juga

Contoh Tugas Skrip