如何在 vb .net 中获取任何已连接打印机的型号

Posted

技术标签:

【中文标题】如何在 vb .net 中获取任何已连接打印机的型号【英文标题】:How to get the model number of any connected printer in vb .net 【发布时间】:2012-05-21 02:48:03 【问题描述】:

正如问题所述,我需要使用 vb dotNet 找到打印机的型号。

目前一直在使用 EnumPrinters API 并检查驱动程序名称,但是某些打印机由同名驱动程序支持(即驱动程序支持一系列打印机),这让我无法区分它们。

我需要输出为<manufacturer> <model> <codes>

vb.net/任何其他语言是否可以实现这一点

【问题讨论】:

也许您可以使用msdn.microsoft.com/en-us/library/aa394363%28VS.85%29.aspx 来获取您需要的打印机属性。我从未使用过winspool.drv。但是我已经使用 Win_32 完成了这样的任务,以便在服务器上连接打印机。 【参考方案1】:

不会为您编写整个代码,但请查看 DriverName 属性。在调试模式下运行整个事情,以查看您可以使用的其他属性。您需要添加对 System.Drawing 和 System.Management 的引用。

Imports System.Drawing.Printing
Imports System.Management


Module Module1

    Sub Main()
        Dim printers = PrinterSettings.InstalledPrinters

        For Each printerName As String In printers
            Dim query As String = String.Format("SELECT * from Win32_Printer WHERE Name LIKE '%0'", printerName)
            Dim searcher As ManagementObjectSearcher = New ManagementObjectSearcher(query)
            Dim collection As ManagementObjectCollection = searcher.Get()

            For Each printer As ManagementObject In collection
                For Each propData As PropertyData In printer.Properties
                    Debug.WriteLine(String.Format("0: 1", propData.Name, propData.Value))
                Next
            Next
        Next
    End Sub

End Module

【讨论】:

以上是关于如何在 vb .net 中获取任何已连接打印机的型号的主要内容,如果未能解决你的问题,请参考以下文章

如何在 vb.net 中打印带有标题的 datagridview 表?

在 vb.net 的 datagridview 中添加行号

如何在VB.NET ListView获取已选中单元格所在的列?

使用 VB.NET 打印 MS Access 报告

在 VB .NET 中查找并启动 *** 连接

如何从 VB.NET 中的 USB 端口获取数据