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 makinesinde kurulu tüm yazıcıları List<string> olarak döndüren tek bir statik yöntem (Printer.GetPrinterNames()) sunar. 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. NuGet aracılığıyla IronPrint'i yükleyin: Install-Package IronPrint
  2. Dosyaya using IronPrint; ekleyin
  3. Yazıcı adlarının List<string>'sini almak için Printer.GetPrinterNames()'yi çağırın
  4. Liste üzerinden iterasyon yapın ve her adı görüntüleyin veya saklayın
  5. PRINT sırasında seçilen adı PrintSettings.PrinterName'ye aktarın
  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 sistemine sorgu gönderir ve kayıtlı tüm yazıcıları 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çenekleri 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ın engellenmesinin kabul edilemez olduğu uygulamalar için (WPF, MAUI veya ASP.NET web uygulamaları), IronPrint Printer.GetPrinterNamesAsync() sağlar. Yöntem, Task<List<string>> değerini döndürür ve eşzamanlı karşılığı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

Diğer tüm asenkron API'ler gibi await çağrısını kullanıyoruz. Sonuç, GetPrinterNames() tarafından döndürülen List<string> ile aynıdır, bu nedenle ek bir ayrıştırma veya dönüştürme işlemi gerekmez. Bu asenkron desen, async Task denetleyici eylemleri ve async void olay işleyicileriyle doğal bir şekilde bütünleşir.

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

Yazıcı adını aldıktan sonra, bunu PrintSettings.PrinterName'ye atar ve ayarlar nesnesini Printer.Print()'ye aktarırız. 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, Printer.GetPrinterTrays(printerName) kullanarak belirli bir yazıcı için kullanılabilir kağıt tepsilerini de alırız; bu, bir PRINT işinin belirli bir tepsiden kağıt alması gerektiğinde kullanışlıdır.

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, GetPrinterNamesAsync() ile aynı sorguyu eşzamansız olarak çalıştırma ve PrintSettings.PrinterName aracılığıyla bir belgeyi 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 41,154 | Sürüm: 2026.5 just released
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.