列出服务器上的打印机

2016-01-29 17:38 11 1 收藏

列出服务器上的打印机,列出服务器上的打印机

【 tulaoshi.com - ASP 】

  组件逻辑

这个组件以“硬方式”编写以便说明如何在VB中调用Wivdons API, 如果你使用VB5中的printer 类也可以实现相同的功能。

这个组件调用了由Windows2000使用的EnumPrinters函数。这个函数以五种格式之一返回一个打印机列表,格式是由你确定的“等级”而定。在这个例子里,我们使用第四级,它只是列举了我们NT服务器所连接的打印机名字和位置(直接连接或网络连接)。

 

注意

在这里显示的组件代码只适用于Windows NT,如果你在Windows95上运行Personal Web Server的话,使用第五级。Windows 95将网络打印机当作本地打印机处理。

第五级的打印结构同第四级的有略微的不同之处,使用VB5 API浏览器将PRINTER_INFO_5结构体复制到你的代码中。

 

这是一个功能强大的API调用,可带许多不同的参数。Visual C的帮助文件提供如何使用EnumPrinters函数的细节,但将C形式的语法翻译成VB语句可能具有挑战胜。你可以从www.microsoft.com网点中下载Microsoft Knowledge Base article Q166008来获得如何翻译的额外细节信息。

我们将返回信息存在一个长整数组中因为它比其它更低级的储存结构更便于操作和索引。通过PtrToStr和StrLen调用,我们能够将长整数数组转换成字符串,这种结果在VB中最容易使用。

当确定了有多少打印机与系统相连,我们redim(重定义)两个数组(m_aDeviceName和m_ServerName)来存储所发现打印机数目。如果没有发现打印机,这些代码将不会执行,因为错误处理代码将接管程序的执行。

 

编写源代码

再一次启动一个新的VB6 ActiveX DLL项目,VB显示了一个缺省的代码窗口名叫Class1,按F4,按以下修改属性表:

(Name)WebPrinters

Instancing 5 - MultiUse

选择Projects |Project 1 Properties将项目名改为Web Utils,并选择Unattended Execution。选项最后最后单击对话框的Make表栏并选择Auto Increment,按OK键保存设置。

下面代码包含了打印机组件的源代码,这个组件只是列举了你系统上的打印机——你可以扩展其代码事完成实际的打印任务。不象先前的VB组件,这个例子使用VB的Get 和Let属性。对这些属性的讨论超过了本例的范围,但Microsoft’s Visual Books Online(与VB5捆绑在一起)包含了这两个属性的深层次解释。

Option Explicit

Private Declare Function EnumPrinters Lib "winspool.drv" _
                Alias "EnumPrintersA" _
                (ByVal flags As Long, ByVal name As String, _
                ByVal Level As Long, pPrinterEnum As Long, _
                ByVal cdBuf As Long, pcbNeeded As Long, pcReturned As Long) _
                As Long

Private Declare Function PtrToStr Lib "Kernel32" Alias "lstrcpyA" _
                (ByVal RetVal As String, ByVal Ptr As Long) As Long

Private Declare Function StrLen Lib "Kernel32" Alias "lstrlenA" _
                (ByVal Ptr As Long) As Long

Private Type PRINTER_INFO_4
     pPrinterName As String
     pServerName As String
     Attributes As Long
End Type

Private Const PRINTER_ENUM_LOCAL = &H2
Private Const PRINTER_ENUM_CONNECTIONS = &H4
Private Const PRINTER_ENUM_NAME = &H8
Private Const PRINTER_ENUM_NETWORK = &H40
Private Const PRINTER_ENUM_REMOTE = &H10
Private Const PRINTER_ENUM_SHARED = &H20

Private m_iPrinterCount As Integer
Private m_aDeviceName() As String
Private m_aServer() As String

Private Property Let PrinterCount(iValue As Integer)
     m_iPrinterCount = iValue
End Property

Public Property Get PrinterCount() As Integer
    PrinterCount = m_iPrinterCount
End Property

Private Property Let DeviceName(iIn

来源:https://www.tulaoshi.com/n/20160129/1502284.html

延伸阅读
步骤 1:检查硬件 许多打印问题是由于硬件设置不正确造成的。 以下是如何将电缆插入正确位置并确保打印机接通电源的相关信息。 检查电缆是否正确连接 检查以确保打印机的电源线已插入到电源插口中,同时打印机电缆已正确地从打印机连接到计算机。 典型的 USB 电缆和端口 请检查电源 检查以确保打印机电源开关处于打开状态,或者,如果...
标签: 电脑入门
让大家都知道局域网是怎么样共享打印机的.呵呵. 首先我们说说要实现局域网打印机共享的必备要求把: 需要两台或者多台电脑组成的局域网络,打印机一台(针式打印机、喷墨打印机、激光打印机等都可以)然后选择局域网其中的一台电脑,接打印机,我们叫它打印机服务器,其余的电脑是共享打印机服务器的打印机,我们叫它打印机客户机.已下简称,服务器和...
标签: 电脑入门
电脑系统提示打印机服务无法自动启动在 开始---设置----控制面板-----管理工具-----服务中,找到Print Spooler,双击进入菜单,启动类型选 自动。但是下次开机有自动停止,还得手动改为启动,这是怎么回事? 答:估计是有程序监控你的注册表,重启后就还原了 实在解决不了: net start spooler 写成批处理案后放到开始程序的 启动 里面 直...
标签: 打印机 电脑
确定打印机能正常使用 首先确定打印机是否能正常使用,然后将usb数据线连接电脑和打印机。 打开控制面板 打开我的电脑进入控制面板(我的是windos7)。 进入硬件和声音选项 接着,进入硬件和声音选项。 添加打印机 点击设备和打印机选项的添加打印机。 添加本地打印机 第二个不用管他,他是装无线打印机的一般用不上。然...
标签: 电脑入门
一、墨盒的使用常识 ★将墨盒存放在室温环境下,避开阳光、强光线和热源存放。 ★在墨盒未上机安装使用前,切勿撕开墨盒的外包装及气孔封条。 ★在墨盒拆封后请尽快将它安装到打印机上去,否则有可能会引起墨盒漏墨或喷不出颜色。 ★为得到最好的打印效果,请在安装墨盒后的六个月内使用。 二、与墨盒寿命相关的因素 ★在使用彩色喷墨盒(...

经验教程

424

收藏

98
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部