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 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
<CENTER><H1>Web Server Printers</H1></CENTER><HR Color="Red">
<% Dim oSystemPrinters Dim i Set oSystemPrinters = Server.CreateObject("WebUtils.WebPrinters") %> There are <%=oSystemPrinters.PrinterCount%> Server printers<BR> <% i = oSystemPrinters.PrinterCount If i > 0 Then For i = 0 to i - 1 %> Printer <% =cstr(i + 1) %>: <%=oSystemPrinters.deviceName(cint(i))%><BR> <% Next End If
Set oSystemPrinters = Nothing ' De-reference the object %> </BODY> </HTML>