狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當(dāng)前位置:系統(tǒng)之家 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

列出服務(wù)器上的打印機(jī) 

列出服務(wù)器上的打印機(jī) 

更新時(shí)間:2024-04-12 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

組件邏輯

這個(gè)組件以“硬方式”編寫以便說明如何在VB中調(diào)用Wivdons API, 如果你使用VB5中的printer 類也可以實(shí)現(xiàn)相同的功能。

這個(gè)組件調(diào)用了由Windows2000使用的EnumPrinters函數(shù)。這個(gè)函數(shù)以五種格式之一返回一個(gè)打印機(jī)列表,格式是由你確定的“等級(jí)”而定。在這個(gè)例子里,我們使用第四級(jí),它只是列舉了我們NT服務(wù)器所連接的打印機(jī)名字和位置(直接連接或網(wǎng)絡(luò)連接)。

 

注意

在這里顯示的組件代碼只適用于Windows NT,如果你在Windows95上運(yùn)行Personal Web Server的話,使用第五級(jí)。Windows 95將網(wǎng)絡(luò)打印機(jī)當(dāng)作本地打印機(jī)處理。

第五級(jí)的打印結(jié)構(gòu)同第四級(jí)的有略微的不同之處,使用VB5 API瀏覽器將PRINTER_INFO_5結(jié)構(gòu)體復(fù)制到你的代碼中。

 

這是一個(gè)功能強(qiáng)大的API調(diào)用,可帶許多不同的參數(shù)。Visual C的幫助文件提供如何使用EnumPrinters函數(shù)的細(xì)節(jié),但將C形式的語法翻譯成VB語句可能具有挑戰(zhàn)勝。你可以從www.microsoft.com網(wǎng)點(diǎn)中下載Microsoft Knowledge Base article Q166008來獲得如何翻譯的額外細(xì)節(jié)信息。

我們將返回信息存在一個(gè)長整數(shù)組中因?yàn)樗绕渌图?jí)的儲(chǔ)存結(jié)構(gòu)更便于操作和索引。通過PtrToStr和StrLen調(diào)用,我們能夠?qū)㈤L整數(shù)數(shù)組轉(zhuǎn)換成字符串,這種結(jié)果在VB中最容易使用。

當(dāng)確定了有多少打印機(jī)與系統(tǒng)相連,我們r(jià)edim(重定義)兩個(gè)數(shù)組(m_aDeviceName和m_ServerName)來存儲(chǔ)所發(fā)現(xiàn)打印機(jī)數(shù)目。如果沒有發(fā)現(xiàn)打印機(jī),這些代碼將不會(huì)執(zhí)行,因?yàn)殄e(cuò)誤處理代碼將接管程序的執(zhí)行。

 

編寫源代碼

再一次啟動(dòng)一個(gè)新的VB6 ActiveX DLL項(xiàng)目,VB顯示了一個(gè)缺省的代碼窗口名叫Class1,按F4,按以下修改屬性表:

(Name)WebPrinters

Instancing 5 - MultiUse

選擇Projects |Project 1 Properties將項(xiàng)目名改為Web Utils,并選擇Unattended Execution。選項(xiàng)最后最后單擊對(duì)話框的Make表欄并選擇Auto Increment,按OK鍵保存設(shè)置。

下面代碼包含了打印機(jī)組件的源代碼,這個(gè)組件只是列舉了你系統(tǒng)上的打印機(jī)——你可以擴(kuò)展其代碼事完成實(shí)際的打印任務(wù)。不象先前的VB組件,這個(gè)例子使用VB的Get 和Let屬性。對(duì)這些屬性的討論超過了本例的范圍,但Microsoft’s Visual Books Online(與VB5捆綁在一起)包含了這兩個(gè)屬性的深層次解釋。

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

創(chuàng)建DLL

將你的工作保存到磁盤上,例如:c:\Utils。

選擇File|Make WebUtils DLL來創(chuàng)建DLL。這個(gè)組件將保存在同你保存源代碼相同路徑下。

在命令行中通過以下命令注冊(cè)DLL。

RegSvr32 c:\Utils\WebUtils.dll

 

在頁面中使用組件

下面顯示的ASP代碼將列出與你系統(tǒng)相連的所有打印機(jī)。通過改寫這些代碼,你可以添加一個(gè)下拉列表框,使得用戶在其中選擇一個(gè)打印機(jī),然后將他們的選擇傳遞給你自己的定制組件,將報(bào)告輸出到所選的打印機(jī)上。

 

Printers.asp

--------------------------------------------------------------------------------


<% Option Explicit %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><HTML><HEAD> <TITLE>System Printers</TITLE></HEAD>

<BODY BGCOLOR="#FFFFFF"><FONT SIZE="2" FACE="Verdana, Arial, Helvetica">

<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>

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
精品国产123| 性高湖久久久久久久久| 日韩一级在线| 欧美亚日韩国产aⅴ精品中极品| 欧美mv日韩mv国产| 亚洲一卡二卡三卡四卡五卡| 狠狠色2019综合网| 91久久精品www人人做人人爽| 亚洲色图一区二区| 免费人成精品欧美精品 | 欧美伊人精品成人久久综合97| 日韩亚洲欧美成人一区| 一区二区三区精品视频| 成人黄色在线看| 久久婷婷麻豆| 国产午夜精品在线观看| 麻豆成人91精品二区三区| 日韩一二在线观看| 久久午夜av| 91精品中文字幕一区二区三区| 欧美一区三区四区| 国产三级三级三级精品8ⅰ区| 国产精品久久久久久久久免费丝袜| 中文字幕中文字幕一区| 亚洲成在线观看| 九九视频精品免费| 99国产精品国产精品毛片| 亚洲国产高清不卡| 日本欧美加勒比视频| 亚洲黄色毛片| 久久免费视频色| 国产精品白丝jk白祙喷水网站| 先锋影音国产一区| 亚洲欧美在线高清| 97久久超碰国产精品电影| 欧美日韩aaaaa| 午夜欧美电影在线观看| 亚洲高清资源| 中文字幕不卡三区| 成人av电影在线观看| 欧美喷水一区二区| 首页亚洲欧美制服丝腿| 亚洲人成久久| 国产精品欧美精品| 欧美成人日韩| www国产精品av| 国产精品亚洲人在线观看| 欧美性xxxxxxxx| 性久久久久久久| 亚洲精品影院| 亚洲欧美另类在线| 亚洲精选成人| 国产一区二区三区免费看| av电影在线不卡| 日韩午夜中文字幕| 国产一区二区三区免费看| 欧美亚洲精品一区| 美腿丝袜在线亚洲一区| 狼狼综合久久久久综合网| 亚州成人在线电影| 久久一区二区精品| 日日夜夜精品视频天天综合网| 久久国产精品毛片| 日本免费新一区视频| 在线欧美一区二区| 久久91精品久久久久久秒播| 欧美三级日韩三级| 国产一区二区视频在线播放| 91精品国产全国免费观看| 高清不卡一区二区| 久久综合色鬼综合色| 欧美精品1区| 亚洲精品视频在线看| 国产一区二区三区免费不卡| 午夜在线成人av| 巨乳诱惑日韩免费av| 亚洲人成影院在线观看| 99精品欧美一区二区三区综合在线| 在线免费观看一区| 亚洲电影视频在线| 亚洲三级免费| 欧美国产成人精品| 不卡av免费在线观看| 777a∨成人精品桃花网| 日产国产欧美视频一区精品| 精品国产免费人成在线观看| 日韩一级在线| 男男成人高潮片免费网站| 欧美久久一区二区| 91麻豆成人久久精品二区三区| 国产精品久久久久久久裸模| 香蕉久久夜色精品国产| 黄色日韩网站视频| 国产日韩欧美精品电影三级在线| 亚洲国产国产亚洲一二三| 日韩电影一二三区| 欧美一级xxx| 黄色一区三区| 日韩成人伦理电影在线观看| 日韩欧美电影一二三| 亚洲一级特黄| 九色综合国产一区二区三区| 久久久久久久久久电影| 国产日韩欧美亚洲一区| 国产精品一区二区视频| 国产精品成人免费在线| 欧美日韩在线综合| 欧美日韩综合久久| 麻豆精品一区二区综合av| 国产亚洲精久久久久久| 久久综合亚州| 色综合久久综合网97色综合| 午夜电影网亚洲视频| 久久午夜国产精品| 久久精品一区二区国产| 菠萝蜜视频在线观看一区| 亚洲国产日韩精品| 久久亚洲综合色| 在线免费不卡视频| 黄色av一区| 国产精品99久| 亚洲国产精品久久艾草纯爱| 亚洲精品在线免费播放| 久久久噜噜噜久久狠狠50岁| 91麻豆免费看| 激情深爱一区二区| 亚洲午夜久久久| 久久久91精品国产一区二区三区| 在线免费观看日韩欧美| 亚洲婷婷在线| 成人精品视频一区| 日韩av一级电影| 亚洲色图制服丝袜| 精品电影一区二区三区| 欧美亚洲国产一区二区三区va| 亚洲另类视频| 色综合天天综合网国产成人综合天 | 五月激情综合网| 国产精品国产三级国产| 日本乱人伦aⅴ精品| av动漫一区二区| 一区二区三区中文字幕在线观看| 欧美性生活久久| 欧美激情四色| 男女激情视频一区| 中文在线免费一区三区高中清不卡| 国产精品免费看| 国产成人精品亚洲日本在线桃色 | 亚洲精品偷拍| 欧美精品网站| 91丨porny丨最新| 岛国一区二区在线观看| 狠狠色丁香久久婷婷综| 日韩高清不卡一区二区三区| 依依成人综合视频| 综合精品久久久| 日本一区二区三区国色天香| 精品国产91九色蝌蚪| 91精品国产免费| 欧美精品三级在线观看| 欧美体内she精高潮| 美日韩精品免费| 国产精品一区二区欧美| 一区二区av| av成人国产| 国产欧美日韩在线播放| 99伊人成综合| 中文欧美日韩| 99热在线精品观看| 在线综合亚洲| 亚洲制服av| 久久精品人人| 日本韩国一区二区三区视频| 久热精品视频| 欧美日韩在线播放三区| 欧美唯美清纯偷拍| 欧美日韩午夜在线| 欧美精品123区| 精品久久久久久久人人人人传媒 | 日本伦理一区二区| 欧美日韩视频第一区| 91精品国产一区二区三区| 欧美一级二级三级蜜桃| 久久色在线观看| 国产精品色呦呦| 亚洲精品菠萝久久久久久久| 亚洲国产精品精华液网站| 蜜桃视频免费观看一区| 国产原创一区二区| av亚洲精华国产精华| 色综合中文字幕国产| 99精品视频在线播放观看| 欧美日韩一区二区视频在线观看| 国产精品二区三区四区| 国产农村妇女精品一区二区| 91久久精品网| 亚洲精品一线二线三线| 亚洲色图第一区| 日本 国产 欧美色综合| 国产白丝网站精品污在线入口|