C#'de Yazıcı Adları Nasıl Alınır

This article was translated from English: Does it need improvement?
Translated
View the article in English

Bir sistemde hangi yazıcıların mevcut olduğunu bilmek, belgeleri yazdırmak için gönderen herhangi bir .NET uygulaması için yaygın bir ön koşuldur. İster kullanıcıların açılır menüden bir yazıcı seçmesine izin vermek olsun, ister baskı işlerini belirli bir cihaza otomatik olarak yönlendirmek olsun, yazıcı adlarını programlı olarak almak ilk adımdır.

IronPrint, mevcut Windows makinesindeki her yüklü yazıcıyı bir List<string> olarak döndüren tek bir statik yöntem olan Printer.GetPrinterNames() gösterir. Kurulum, senkron ve asenkron alma ve seçilen bir yazıcı adını bir yazdırma işine nasıl besleyeceğimizi aşağıda ele alıyoruz.

Hızlı Başlangıç: Yazıcı Adlarını Al

  1. IronPrint'i NuGet aracılığıyla yükleyin: Install-Package IronPrint
  2. Dosyaya using IronPrint; ekleyin
  3. Yazıcı adlarının bir List<string> almak için Printer.GetPrinterNames() çağırın
  4. Liste üzerinden iterasyon yapın ve her adı görüntüleyin veya saklayın
  5. Yazdırma sırasında seçilen bir adı PrintSettings.PrinterName'e iletin
  1. IronPrint aşağıdaki NuGet Paket Yöneticisi ile yükleyin

    PM > Install-Package IronPrint
  2. Bu kod parçacığını kopyalayın ve çalıştırın.

    using IronPrint;
    
    // Retrieve every printer installed on this machine
    List<string> printers = Printer.GetPrinterNames();
    
    foreach (var name in printers)
    {
        Console.WriteLine(name);
    }
  3. Canlı ortamınızda test için dağıtım yapın

    Ücretsiz deneme ile bugün projenizde IronPrint kullanmaya başlayın

    arrow pointer

Kurulu Tüm Yazıcı Adlarını Nasıl Listeleyebilirim?

Printer.GetPrinterNames() işletim sistemini sorgular ve her kayıtlı yazıcıyı bir List<string> olarak döndürür. Bu yöntemi bir kez çağırıyoruz ve sonucun üzerinden iterasyon yapıyoruz:

:path=/static-assets/print/content-code-examples/how-to/retrieve-printer-names/retrieve-printer-names-list-all-printers.cs
using IronPrint;
using System;
using System.Collections.Generic;

// List every installed printer
List<string> printerNames = Printer.GetPrinterNames();

Console.WriteLine($"Found {printerNames.Count} printer(s):\n");

// Print each printer name
foreach (string name in printerNames)
{
    Console.WriteLine($"  • {name}");
}
Imports IronPrint
Imports System
Imports System.Collections.Generic

' List every installed printer
Dim printerNames As List(Of String) = Printer.GetPrinterNames()

Console.WriteLine($"Found {printerNames.Count} printer(s):" & vbCrLf)

' Print each printer name
For Each name As String In printerNames
    Console.WriteLine($"  • {name}")
Next
$vbLabelText   $csharpLabel

Konsol Çıkış

3 yazıcı bulundu:

  • Microsoft Print to PDF
  • HP LaserJet Pro MFP M428
  • OneNote (Masaüstü)

Dönen liste yerel yazıcılar, ağ yazıcıları ve sanal yazdırma sürücülerini içerir. Her dize, Windows Ayarlar > Yazıcılar ve tarayıcılar panelinde gösterilen kesin adı eşleşir, böylece yazdırma ayarları yapılandırmasında doğrudan kullanılabilir.

Hiç yazıcı kurulmadıysa, yöntem bir istisna atmadan boş bir liste döndürür. Kullanıcıya seçenekler sunmadan önce hızlı bir printerNames.Count kontrolü yeterlidir.

Yazıcı Adlarını Asenkron Olarak Nasıl Alırım?

UI iş parçacığını engellemenin kabul edilebilir olmadığı uygulamalar için — WPF, MAUI veya ASP.NET web uygulamaları — IronPrint, Printer.GetPrinterNamesAsync() sağlar. Yöntem bir Task<List<string>> döndürür ve senkron karşıtıyla aynı şekilde çalışır:

:path=/static-assets/print/content-code-examples/how-to/retrieve-printer-names/retrieve-printer-names-async-printer-names.cs
using IronPrint;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

// Retrieve printer names asynchronously
List<string> printerNames = await Printer.GetPrinterNamesAsync();

// Print each printer name
foreach (string name in printerNames)
{
    Console.WriteLine(name);
}
Imports IronPrint
Imports System
Imports System.Collections.Generic
Imports System.Threading.Tasks

' Retrieve printer names asynchronously
Dim printerNames As List(Of String) = Await Printer.GetPrinterNamesAsync()

' Print each printer name
For Each name As String In printerNames
    Console.WriteLine(name)
Next
$vbLabelText   $csharpLabel

Herhangi bir diğer asenkron API gibi, aramayı await. Sonuç, GetPrinterNames() tarafından döndürülen aynı List<string>'dir, dolayısıyla ek bir ayrıştırma veya dönüştürme gerekli değildir. Bu asenkron desen, async Task denetleyici eylemleri ve async void olay işleyicileriyle doğal olarak entegre olur.

Belirli Bir Yazıcıya Adına Göre Nasıl Yazdırırım?

Yazıcı adını aldıktan sonra, onu PrintSettings.PrinterName'e atayarak ve ayar nesnesini Printer.Print()'e geçiririz. Bu, belgeyi diyalog kutusu görüntülemeden doğrudan seçilen yazıcıya gönderir:

:path=/static-assets/print/content-code-examples/how-to/retrieve-printer-names/retrieve-printer-names-print-to-specific-printer.cs
using IronPrint;
using System.Collections.Generic;

// Retrieve available printers
List<string> printers = Printer.GetPrinterNames();

// Select a printer matching "LaserJet", or fall back to the first available
string targetPrinter = printers.Find(p => p.Contains("LaserJet"))
                       ?? printers[0];

// Configure print settings
PrintSettings settings = new PrintSettings
{
    PrinterName = targetPrinter,
    PaperSize = PaperSize.A4,
    NumberOfCopies = 1
};

// Print the document
Printer.Print("invoice.pdf", settings);
Imports IronPrint
Imports System.Collections.Generic

' Retrieve available printers
Dim printers As List(Of String) = Printer.GetPrinterNames()

' Select a printer matching "LaserJet", or fall back to the first available
Dim targetPrinter As String = printers.Find(Function(p) p.Contains("LaserJet")) _
                       OrElse printers(0)

' Configure print settings
Dim settings As New PrintSettings With {
    .PrinterName = targetPrinter,
    .PaperSize = PaperSize.A4,
    .NumberOfCopies = 1
}

' Print the document
Printer.Print("invoice.pdf", settings)
$vbLabelText   $csharpLabel

PrintSettings, Dpi, PaperOrientation, Grayscale ve PaperMargins gibi ek özellikleri destekler. Tam listeyi PrintSettings API referansı ve yazdırma ayarları nasıl yapılır kılavuzu adresinde inceleyin.

Ayrıca, belirli bir tepsiden kağıt çekilmesi gerektiğinde, bir yazıcı için mevcut kağıt tepsilerini Printer.GetPrinterTrays(printerName) kullanarak alırız.

Sonraki Adımlarım Neler?

Dört işlemi ele aldık: IronPrint'i yükleme, GetPrinterNames() ile tüm yazıcı adlarını listeleme, aynı sorguyu GetPrinterNamesAsync() ile eşzamanlı olarak çalıştırma ve bir belgeyi PrintSettings.PrinterName aracılığıyla belirli bir yazıcıya yönlendirme.

Daha fazla okuma ve daha derin örnekler için bu kaynakları keşfedin:

Canlı bir ortamda her özelliği test etmek için ücretsiz deneme lisansı alın veya kullanıma hazır olduğunuzda lisans seçeneklerini görüntüleyin.

Sıkça Sorulan Sorular

C#'ta yazıcı adlarını almanın en kolay yolu nedir?

C#'ta yazıcı adlarını almanın en kolay yolu, tek bir yöntem çağrısıyla kurulu yazıcıları almanıza olanak tanıyan IronPrint .NET kullanmaktır.

IronPrint kullanarak yazıcı adlarını asenkron olarak alabilir miyim?

Evet, IronPrint .NET asenkron işlemleri destekler, böylece ana thread'i engellemeden yazıcı adlarını alabilirsiniz.

IronPrint kullanarak isimle belirlenen bir yazıcıya yazdırmak mümkün mü?

Kesinlikle, IronPrint .NET, belgeleri tercihinize göre, kurulu herhangi bir yazıcıya doğrudan yazdırabilmeniz için yazıcı adını belirtmenize olanak tanır.

IronPrint tüm .NET platformlarında yazıcı adlarını almayı destekler mi?

IronPrint .NET, çeşitli .NET platformlarıyla çalışmak üzere tasarlanmıştır, farklı ortamlarda yazıcı adlarını sorunsuzca almanıza imkan tanır.

IronPrint, ağ ortamında yazıcı adlarını nasıl yönetir?

IronPrint .NET, hem yerel hem de ağ üzerindeki yazıcılardan yazıcı adlarını alabilir, farklı ağ yapılandırmaları için esnek kullanım imkanı sağlar.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 44,435 | Sürüm: 2026.7 yeni yayınlandı
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package IronPrint
bir örnek çalıştır belgenizin yazıcıya ulaşmasını izleyin.