|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
实现规模效益。与传统的用户拥有硬件软件所有权和使用权以及传统的应用服务商提供一对一的服务模式不同,ASP拥有应用系统所有权,用户拥有使用权,应用系统集中放在ASP的数据中心中,集中管理,分散使用,以一对多的租赁的形式为众多用户提供有品质保证的应用技术服务,实现规模效益。打印|服务器组件逻辑
这个组件以“硬体例”编写以便申明怎样在VB中挪用WivdonsAPI,假如你利用VB5中的printer类也能够完成不异的功效。
这个组件挪用了由Windows2000利用的EnumPrinters函数。这个函数以五种格局之一前往一个打印机列表,格局是由你断定的“品级”而定。在这个例子里,我们利用第四级,它只是枚举了我们NT服务器所毗连的打印机名字和地位(间接毗连或收集毗连)。
注重
在这里显现的组件代码只合用于WindowsNT,假如你在Windows95上运转PersonalWebServer的话,利用第五级。Windows95将收集打印机看成当地打印机处置。
第五级的打印布局同第四级的有稍微的分歧的地方,利用VB5API扫瞄器将PRINTER_INFO_5布局体复制到你的代码中。
这是一个功效壮大的API挪用,可带很多分歧的参数。VisualC的匡助文件供应怎样利用EnumPrinters函数的细节,但将C情势的语法翻译成VB语句大概具有应战胜。你能够从www.microsoft.com网点中下载MicrosoftKnowledgeBasearticleQ166008来取得怎样翻译的分外细节信息。
我们将前往信息存在一个长整数组中由于它比别的更初级的贮存布局更便于操纵和索引。经由过程PtrToStr和StrLen挪用,我们可以将长整数数组转换成字符串,这类了局在VB中最简单利用。
当断定了有几打印机与体系相连,我们redim(重界说)两个数组(m_aDeviceName和m_ServerName)来存储所发明打印机数量。假如没有发明打印机,这些代码将不会实行,由于毛病处置代码将接受程序的实行。
编写源代码
再一次启动一个新的VB6ActiveXDLL项目,VB显现了一个缺省的代码窗口名叫Class1,按F4,按以下修正属性表:
(Name)WebPrinters
Instancing5-MultiUse
选择Projects|Project1Properties将项目名改成WebUtils,并选择UnattendedExecution。选项最初最初单击对话框的Make表栏并选择AutoIncrement,按OK键保留设置。
上面代码包括了打印机组件的源代码,这个组件只是枚举了你体系上的打印机――你能够扩大其代码事完成实践的打印义务。不象先前的VB组件,这个例子利用VB的Get和Let属性。对这些属性的会商凌驾了本例的局限,但Microsoft’sVisualBooksOnline(与VB5绑缚在一同)包括了这两个属性的深条理注释。
OptionExplicit
PrivateDeclareFunctionEnumPrintersLib"winspool.drv"_
Alias"EnumPrintersA"_
(ByValflagsAsLong,ByValnameAsString,_
ByValLevelAsLong,pPrinterEnumAsLong,_
ByValcdBufAsLong,pcbNeededAsLong,pcReturnedAsLong)_
AsLong
PrivateDeclareFunctionPtrToStrLib"Kernel32"Alias"lstrcpyA"_
(ByValRetValAsString,ByValPtrAsLong)AsLong
PrivateDeclareFunctionStrLenLib"Kernel32"Alias"lstrlenA"_
(ByValPtrAsLong)AsLong
PrivateTypePRINTER_INFO_4
pPrinterNameAsString
pServerNameAsString
AttributesAsLong
EndType
PrivateConstPRINTER_ENUM_LOCAL=&H2
PrivateConstPRINTER_ENUM_CONNECTIONS=&H4
PrivateConstPRINTER_ENUM_NAME=&H8
PrivateConstPRINTER_ENUM_NETWORK=&H40
PrivateConstPRINTER_ENUM_REMOTE=&H10
PrivateConstPRINTER_ENUM_SHARED=&H20
Privatem_iPrinterCountAsInteger
Privatem_aDeviceName()AsString
Privatem_aServer()AsString
PrivatePropertyLetPrinterCount(iValueAsInteger)
m_iPrinterCount=iValue
EndProperty
PublicPropertyGetPrinterCount()AsInteger
PrinterCount=m_iPrinterCount
EndProperty
PrivatePropertyLetDeviceName(iIndexAsInteger,sValueAsString)
m_aDeviceName(iIndex)=sValue
EndProperty
PublicPropertyGetDeviceName(iIndexAsInteger)AsString
DeviceName=m_aDeviceName(iIndex)
EndProperty
PrivatePropertyLetServer(iIndexAsInteger,sValueAsString)
m_aServer(iIndex)=sValue
EndProperty
PublicPropertyGetServer(iIndexAsInteger)AsString
Server=m_aServer(iIndex)
EndProperty
PrivateSubClass_Initialize()
DimbReturnAsBoolean
DimlFlagsAsLong
DimsNameAsString
DimlLevelAsLong
DimlBuffer()AsLong
DimlCdBufAsLong
DimlPcbNeededAsLong
DimlEntriesAsLong
DimiAsInteger
DimlTempAsLong
DimsTempStringAsString
lFlags=PRINTER_ENUM_CONNECTIONSOrPRINTER_ENUM_LOCAL
sName=vbNullString
lLevel=4
lCdBuf=3072
ReDimlBuffe</p>帮助用户快速实现各种应用服务,ASP商有整合各方面资源的能力,可在短期内为用户提供所需的解决方案。例如,典型的ERP安装,如果要在客户端安装的话需要半年到二年的时间,但是美国的一些ASP商如USI和CORIO能在90—120天内提供ERP应用方案。 |
|