[摘要]Project 1 Properties将项目名改为Web Utils,并选择Unattended Execution。选项最后最后单击对话框的Make表栏并选择Auto Increment,按OK...
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(iIndex As Integer, sValue As String)
m_aDeviceName(iIndex) = sValue
End Property
Public Property Get DeviceName(iIndex As Integer) As String
DeviceName = m_aDeviceName(iIndex)
End Property
Private Property Let Server(iIndex As Integer, sValue As String)
m_aServer(iIndex) = sValue
End Property
Public Property Get Server(iIndex As Integer) As String
Server = m_aServer(iIndex)
End Property
Private Sub Class_Initialize()
Dim bReturn As Boolean
Dim lFlags As Long
Dim sName As String
Dim lLevel As Long
Dim lBuffer() As Long
Dim lCdBuf As Long
Dim lPcbNeeded As Long
Dim lEntries As Long
Dim i As Integer
Dim lTemp As Long
Dim sTempString As String
lFlags = PRINTER_ENUM_CONNECTIONS Or PRINTER_ENUM_LOCAL
sName = vbNullString
lLevel = 4
lCdBuf = 3072
ReDim lBuffer((lCdBuf \ 4) - 1) As Long
bReturn = EnumPrinters(lFlags, sName, lLevel, lBuffer(0), lCdBuf, lPcbNeeded, lEntries)
PrinterCount = lEntries ' Number Printers Found
ReDim m_aDeviceName(PrinterCount) As String
ReDim m_aServer(PrinterCount) As String
ReDim m_aPaperBin(PrinterCount) As String
ReDim m_aPaperSize(PrinterCount) As String
For i = 0 To PrinterCount - 1 ' Set the Device Name
sTempString = Space(StrLen(lBuffer(i * 3)))
lTemp = PtrToStr(sTempString, lBuffer(i * 3))
DeviceName(i) = sTempString ' Set the Server Name
sTempString = Space(StrLen(lBuffer(i * 3 + 1)))
lTemp = PtrToStr(sTempString, lBuffer(i * 3 + 1))
Server(i) = sTempString
Next i
End Sub
创建DLL
将你的工作保存到磁盘上,例如:c:\Utils。
选择File
关键词:列出服务器上的打印机