Author:水如烟

Imports System.DirectoryServices
Imports System.Management
Public Class HowToSearchPrinterClass HowToSearchPrinter

    Public Shared Function NetPrinters()Function NetPrinters(ByVal GetWay As GetComputer) As String()
        Dim mResult(-1) As String
        Dim mPrinterFormat As String = "Computer:{0} Printer:{1}"
        Dim mNetComputerNames(-1) As String

        Select Case GetWay
            Case GetComputer.Simple
                mNetComputerNames = GetNetComputerNames()
            Case GetComputer.Ping
                mNetComputerNames = GetNetComputerNamesByPing()
        End Select

        For Each mComputer As String In mNetComputerNames
            For Each mPrinter As String In GetPrinterName(mComputer)
                ReDim Preserve mResult(mResult.Length)
                mResult(mResult.Length - 1) = String.Format(mPrinterFormat, mComputer, mPrinter)
            Next
        Next

        Return mResult
    End Function

    '这里不保证得到所有的计算机
    Private Shared Function GetNetComputerNames()Function GetNetComputerNames() As String()
        Dim mResult(-1) As String

        Dim root As DirectoryEntry = New DirectoryEntry("WinNT:")
        For Each Domain As DirectoryEntry In root.Children
            '枚举工作组或域 
            For Each Computer As DirectoryEntry In Domain.Children
                '枚举指定工作组或域的计算机 
                If Computer.SchemaClassName.Equals("Computer") Then
                    ReDim Preserve mResult(mResult.Length)
                    mResult(mResult.Length - 1) = Computer.Name
                End If
            Next
        Next
        Return mResult
    End Function

    '这倒是可以得到所有的计算机,可是也太慢了
    Private Shared Function GetNetComputerNamesByPing()Function GetNetComputerNamesByPing() As String()
        If Not My.Computer.Network.IsAvailable Then Return Nothing
        Dim Result(-1) As String
        Dim PingFormat As String = "192.168.0.{0}"
        For i As Integer = 1 To 254
            If My.Computer.Network.Ping(String.Format(PingFormat, i), 100) Then
                ReDim Preserve Result(Result.Length)
                Result(Result.Length - 1) = Net.Dns.GetHostEntry(String.Format(PingFormat, i)).HostName '这个方法是Net2.0
            End If
        Next
        Return Result
    End Function

    Private Shared Function GetPrinterName()Function GetPrinterName(ByVal computerName As String) As String()
        Dim mResult(-1) As String

        Dim o As New ManagementObject
        o.Scope = New ManagementScope(String.Format("//{0}/root/cimv2", computerName))
        Dim mSearch As New ManagementObjectSearcher(String.Format("SELECT DeviceID FROM {0}", "Win32_Printer"))
        mSearch.Scope = o.Scope
        Try
            For Each mManagementObject As ManagementObject In mSearch.Get()
                ReDim Preserve mResult(mResult.Length)
                mResult(mResult.Length - 1) = System.Text.RegularExpressions.Regex.Replace(mManagementObject.ToString, ".*""(.*)""", "${1}")
            Next
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        Finally
            mSearch.Dispose()
            o.Dispose()
        End Try

        Return mResult
    End Function

    Public Enum GetComputerEnum GetComputer
        Simple
        Ping
    End Enum
End Class

测试:

    Private Sub Button1_Click()Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        For Each s As String In HowToSearchPrinter.NetPrinters(HowToSearchPrinter.GetComputer.Simple)
            Console.WriteLine(s)
        Next
    End Sub

结果:
Computer:FK-A05-01 Printer:hp LaserJet 1000 DOS
Computer:FK-A05-01 Printer:hp LaserJet 1000 (副本 3)
Computer:FK-A05-01 Printer:hp LaserJet 1000
Computer:FK-A05-01 Printer:EPSON AL-C8600 Advanced
Computer:FK-A09-05 Printer:在 PK 上自动 Canon LBP-810
Computer:FK-A09-05 Printer:OKi5530结算单
Computer:FK-A09-05 Printer:OKi5530
Computer:FK-A09-05 Printer:Microsoft Office Document Image Writer
Computer:FK-A09-05 Printer:EPSON LQ-1600KIII
Computer:PK Printer:Tencent Virtual Printer
Computer:PK Printer:Canon LBP-810

HOW TO:枚举网络所有打印机相关推荐

  1. 中标麒麟共享win7打印机_Win7系统添加网络共享打印机

    (注:以下几种方法连接适用于打印机通过USB连接局域网中某台电脑安装好,电脑开放打印机共享.网络打印机通过网线口连接方法下篇介绍) 如今我们在工作和学习之中,经常会用到打印机,现在我们一般做一些文件的 ...

  2. 电脑网络怎么添加计算机,Win10系统如何添加网络共享打印机

    原标题:Win10系统如何添加网络共享打印机 大家平常办公肯定碰到过需要连接网络打印机的情况,是不是有时候连起来特别麻烦?有时候弄一上午也没有头绪?因为大家没有掌握住连接的小技巧,今天柯鸣就跟大家分享 ...

  3. centos安装redis并客户端连接_网络共享打印机图文教程,电脑客户端连接安装设置共享打印机方法...

    大家好,我是老盖,首先感谢观看本文,本篇文章做的有视频,视频讲述的比较详细,也可以看我发布的视频. 今天给大家讲一下网络共享打印机,客户端连接共享打印机的方法,电脑点开始,选择设备和打印机,也可以从控 ...

  4. dos批处理脚本自动添加网络IP打印机-简单亲测可用

    dos批处理脚本自动添加网络IP打印机-简单亲测可用 前言: 网上找的批处理添加方法复杂且需要导入注册表. 花了一天时间研究出来的简单.快速的批处理命令. win10亲测可用. 核心代码: 1. 添加 ...

  5. win7下安装网络共享打印机 hp LaserJet 1010

    公司环境如下: 打印机:HP LASERJET 1010 打印机主机操作系统:WINXP X86 需要连接网络共享打印机的电脑操作系统: WIN7 X64 在安装网络打印机前,先将在自己的电脑上添加一 ...

  6. 如何用计算机名查看共享打印机,如何查找网络共享打印机名称

    [导读]如何查找网络共享打印机,下面就是191路由网整理的网络知识百科,来看看吧! 大家好,我是191路由器网小编,上述问题将由我为大家讲解. 以电脑为例,查找网络共享打印机的方法有: 1.双击网上邻 ...

  7. linux系统如何检测网络打印机,Linux系统配置工具网络与打印机与硬件侦测

    Linux系统配置工具网络与打印机与硬件侦测CentOS系统设定工具:setup--Red Hat版本中独有的东东 利用root身份下达setup指令,(使用远程操作系统的时候要切换成英文语系) 主菜 ...

  8. 鸟哥的Linux私房菜(基础篇)- 第二十一章、系统配置工具(网络与打印机)与硬件侦测

    第二十一章.系统配置工具(网络与打印机)与硬件侦测 最近升级日期:2009/09/15 除了手动配置之外,其实系统提供了一个名为 setup 的命令给系统管理员使用喔!这个命令还能够配置网络呢.此外, ...

  9. 计算机打开共享网络连接打印机共享打印机,网络共享打印机连接不上怎么办_电脑连不上共享打印机如何解决-win7之家...

    通常为了方便多人可以一起共用一台打印机,都会在局域网络中将打印机共享,可是近日有不少用户却遇到网络共享打印机连接不上的情况,这该怎么办呢,确认打印机已经共享,并且电脑在同一个家庭组里,针对脑连不上共享 ...

  10. 通过无线网络实现两台计算机共享打印机共享,教你两招实现无线网络共享打印机...

    教你两招实现无线网络共享打印机 腾讯视频/爱奇艺/优酷/外卖 充值4折起 我们办公室5台电脑用的都是无线网卡,有一个无线路由器,但只有一台打印机,我们想共享打印机,不知道应该怎样设置? 最简单的方法一 ...

最新文章

  1. 在寻找SD-WAN供应商之前,你应该考虑啥呢?
  2. 计算机组成原理:中央处理器
  3. python ctypes实现api测试_Python与C之间的相互调用(Python C API及Python ctypes库)
  4. Algorithms_入门基础_如何使用最高效的方式来判断一个数是否是2的N次方
  5. 数据库基本----SQL语句大全
  6. 线程模型、pthread 系列函数 和 简单多线程服务器端程序
  7. 【整理】内向交货(Inbound Delivery)
  8. Tensorflow yolov3 Intel Realsense D435 单摄像头下各模块识别时间测试
  9. iis7.0 https访问显示403访问被拒绝_提高网站访问性能——Tomcat优化
  10. c#winform自定义窗体(含源码)
  11. 算法-排序-基数排序(对任意整数排序)
  12. 【jzoj】2018.1.31 NOIP普及组——D组模拟赛
  13. 为什么所有的APP都在炫富?
  14. java bs和cs_BS与CS的区别和联系
  15. mysql错误码2002_MySQL错误ERROR 2002 (HY000): Can't connect to local MySQL server through socket
  16. 【LaTex】6.4 listings高亮设置
  17. 速学计算机,新手电脑配置速成学习
  18. NVIDIA边缘端设备(nano、tx2、xavier等)查看安装的jetpack版本
  19. nlp-with-transformers系列-02-从头构建文本分类器
  20. 微信聊天记录内的文件删除了怎么恢复?

热门文章

  1. Unity3D卡牌手游《X三国》源码前后端完整下载安卓+IOS双端
  2. 2021年低压电工考试资料及低压电工模拟考试系统
  3. python多层bp网络_多层bp神经网络 python
  4. 参考文献格式字号字体_论文格式字体字号要求
  5. springboot系列(二十六):如何实现word模板单页导出?这你得会|超级详细,建议收藏
  6. 用友t3 服务器通讯协议,远程登陆用友t3服务器
  7. dubbo源码解析-简单原理、与spring融合
  8. 计算机五笔教案ppt,计算机应用基础课件(五笔字型课件).ppt
  9. Android音视频开发(一)音视频基础知识
  10. Excel拼接数据库语句