yazıcı bağlantısı sorgulama

ilhan mermer

Altın Üye
Katılım
17 Mayıs 2024
Mesajlar
2
Excel Vers. ve Dili
2404 ingilizce
Altın Üyelik Bitiş Tarihi
18-05-2026
merhabalar,
kullanıcının yazıcıya kabloyla ya da bluetooth veya direct wifi üzerinden bağlı olup olmadığını öğrenebilme şansım var mı ? Buna istinaden yazıcı seçmesine gerek kalmadan, bağlantı şekline göre yazıcıyı ben belirlemek istiyorum. kullanıcı sadece çıktı alabilmesi için tek bir tuşa basacak.

tşk
 

systran

Destek Ekibi
Destek Ekibi
Katılım
15 Aralık 2007
Mesajlar
1,661
Excel Vers. ve Dili
2021 PRO [TR]
CHATGPT şöyle der:
Evet, VBA kullanarak kullanıcının yazıcısının nasıl bağlı olduğunu öğrenmek mümkündür, ancak doğrudan ve kesin bir yöntem yoktur. Bunu yapmak için aşağıdaki yaklaşımları kullanabilirsin:

1. WMI (Windows Management Instrumentation) Kullanımı
WMI ile yazıcının bağlantı türünü öğrenmek mümkündür. Aşağıdaki VBA kodu, sistemdeki yazıcıları ve bağlantı türlerini listeler:

Kodu denemedim.
Kod:
Sub YaziciBaglantiTuru()
    Dim objWMI As Object
    Dim objPrinter As Object
    Dim strQuery As String
    Dim objPrinters As Object
    Dim ws As Worksheet
    Dim i As Integer
   
    ' Aktif sayfaya yazdırmak için
    Set ws = ActiveSheet
    ws.Cells.Clear
    ws.Range("A1:B1").Value = Array("Yazıcı Adı", "Bağlantı Türü")
   
    ' WMI nesnesini oluştur
    Set objWMI = GetObject("winmgmts:\\.\root\CIMV2")
   
    ' Yazıcıları sorgula
    Set objPrinters = objWMI.ExecQuery("Select * From Win32_Printer")
   
    i = 2
    ' Her yazıcı için bilgileri al
    For Each objPrinter In objPrinters
        ws.Cells(i, 1).Value = objPrinter.Name
        ws.Cells(i, 2).Value = GetPortType(objPrinter.PortName)
        i = i + 1
    Next objPrinter
   
    MsgBox "Yazıcı bağlantı bilgileri alındı.", vbInformation

End Sub

' Port tipini belirleme fonksiyonu
Function GetPortType(portName As String) As String
    If InStr(1, portName, "USB", vbTextCompare) > 0 Then
        GetPortType = "USB Bağlantısı"
    ElseIf InStr(1, portName, "LPT", vbTextCompare) > 0 Then
        GetPortType = "Paralel Bağlantı"
    ElseIf InStr(1, portName, "COM", vbTextCompare) > 0 Then
        GetPortType = "Seri Bağlantı"
    ElseIf InStr(1, portName, "TCPIP", vbTextCompare) > 0 Then
        GetPortType = "Ağ Bağlantısı (Ethernet/WiFi)"
    ElseIf InStr(1, portName, "WSD", vbTextCompare) > 0 Then
        GetPortType = "Kablosuz Bağlantı (WiFi)"
    Else
        GetPortType = "Bilinmeyen Bağlantı Türü (" & portName & ")"
    End If
End Function
 
Üst