使用 VBRichClient 库
====================
世上竟然还有如此牛人(Olaf Schmidt)为VB开发了如此牛的扩展库!它还有一个伟大的目标:
摆脱 Microsoft COM 的依赖,更容易实现平台移植性(基于新的经典VB编译器),现在的
VBRichClient正是为达到该目标的一个去耦框架。
它能做什么?简单说能提供以下VB没有或很难实现的功能:多线程、函数指针调用、数组列表、高级集合类
内存数据库、XML DOM/SAX访问、子类化、公式计算、SGDI封装、各种加密和压缩算法、文件处理、网络Socket、
简单下载、JSON、JPG压缩解码、音频设备访问、物理引擎、Webkit浏览器、QLite数据库、基于Cairo的2D绘图、
打印、RPC、Web服务器…… 多到你想不到的功能,而且一直在不断扩展中。
VBRichClient 官方网站 http://www.VBRichClient.com/
欢迎登陆以上网站,关注最新消息,还有其它更多内容。这里有经典VB的未来!
由于官网也没有太多的帮助文档,所以只能通过摸索逐步熟悉该库的使用,好在涉及命名都比较通俗易懂,
虽然没有文档,理解起来基本也没有太大难度。还有通过非官方网站,可以下载到 3.0 版本的库,里面有不少
示例可以参考。
1、VBRichClient 的引用
是的,你完全可以不对它进行引用!就可以使用它的功能!参考【使用 DirectCOM 库】
当然你也可以按熟悉的常规方法,通过注册引用该库
2、VBRichClient 的分发
如果采用引用方式使用,则需要将 vbRichClient5.dll 和 vb_cairo_sqlite.dll 一起复制到程序目录,并
对 vbRichClient5.dll 进行注册。
如果采用免注册方法使用,则还需要将 DirectCOM.dll 一并复制到程序目录或System目录。
3、VBRichClient 的使用
VBRichClient 是个相当庞大的库,需要花一些时间熟悉里面的类,最简单的办法就是使用其中的 cConstructor
类直接“生产”其它的对象。使用 DirectCOM 免注册使用,则必须使用 cConstructor 访问其他类。
dim rcConstructor as object
dim rcMemDB as object
set rcConstructor = DirectCom_Create("vbRichClient5.dll", "cConstructor")
set rcMemDB = rcConstructor.MemDB()
rcMemDB.xxx
4、cConstructor 成员列表
● ArrayList
简介:创建数组列表对象,支持动态添加、移除,也可以当队列或者栈来用,支持排序
原型:Function ArrayList(vType As VbVarType, ParamArray P() As Variant) As cArrayList
● AudioCaptureClient
简介:创建捕捉音频对象
原型:Function AudioCaptureClient() As cAudioCaptureClient
● AudioRenderClient
简介:创建播放音频对象
原型:Function AudioRenderClient() As cAudioRenderClient
● Cairo
简介:创建 Cairo 2D 绘图对象,支持许多高级绘图函数,比如反锯齿,透明,文字,变形……
原型:Function Cairo() As cCairo
● cdeclCall
简介:以CDECLCALL约定调用函数指针
原型:Function cdeclCall(retType As enmRetType, pFunc As Long, ParamArray P() As Variant)
● cdeclCallDirect
简介:以CDECLCALL约定调用函数指针,与cdeclCall区别不明
原型:Function cdeclCallDirect(retType As enmRetType, pFunc As Long, pArgs As Long, ArgsByteCount As Long)
● CleanupRichClientDll
简介:清空VBRichClient的临时文件?未验证
原型:Sub CleanupRichClientDll()
● ClipBoard
简介:创建剪切板对象,比VB自带的对象好用
原型:Function ClipBoard() As cUniClipBoard
● CodePageMapping
简介:创建编码和代码页映射对象
原型:Function CodePageMapping() As cCodePageMapping
● Collection
简介:创建集合对象,该对象比VB自带的Collection和Scripting.Dictionary有更多的功能
原型:Function Collection([CompatibleToVBCollection As Boolean = True], [StringCompareMode As StringCompareModeEnum = 1], [UniqueKeys As Boolean = True], [Content]) As cCollection
● ControlPoints
简介:创建控制点对象,用来在2D绘图中控制形状或曲线的参数
原型:Function ControlPoints() As cControlPoints
● Converter
简介:创建转换数据库对象
原型:Function Converter([CaseInSensitiveTextColumns_ConformToJet As Boolean]) As cConverter
● CreateInstanceUnk
简介:通过注册表中的 ClsID 和 IID 直接创建COM对象
原型:Function CreateInstanceUnk(ClsID As String, IID As String) As IUnknown
● Crypt
简介:创建加密对象,该对象支持各种常见加密解密算法和压缩算法
原型:Function Crypt() As cCrypt
● DataObjectFiles
简介:创建数据对象文件
原型:Function DataObjectFiles() As cDataObjectFiles
● DataSource
简介:创建数据源对象
原型:Function DataSource() As cDataSource
● DC
简介:创建设备上下文对象,GDI绘图用
原型:Function DC([DIB As cDIB], [DDB As cDDB]) As cDC
● DDB
简介:创建设备相关位图对象,GDI绘图用
原型:Function DDB([dx As Long], [dy As Long], [Picture As StdPicture], [PictureBytes]) As cDDB
● DIB
简介:创建设备无关位图对象,GDI绘图用
原型:Function DIB([dx As Long], [dy As Long], [Picture As StdPicture], [PictureBytes], [IconBytes], [UseIconDefaultSize As Boolean], [DesiredIconSize As Long]) As cDIB
● Displays
简介:创建显示器对象,支持多显示器,获取显示器硬件参数
原型:Function Displays() As cDisplays
● Downloads
简介:创建简单下载对象,支持进度报告
原型:Function Downloads() As cDownloads
● EventCollection
简介:创建事件集合对象,作用暂未知
原型:Function EventCollection() As cEventCollection
● Formula
简介:创建公式对象,对包含计算公式的字符串求值
原型:Function Formula() As cFormula
● FSO
简介:创建文件系统对象,与Scripting.FileSystemObject类似,但有更多新功能,比如打开保存文件对话框、获取临时文件、获取各种特殊文件夹……
原型:Function FSO([CreateFreshInstance As Boolean]) As cFSO
● GestureConfigList
简介:作用暂未知
原型:Function GestureConfigList() As cGestureConfigList
● GetCPUCoresCount
简介:获取CPU核心数
原型:Function GetCPUCoresCount() As Long
● GetFuncPtr
简介:获取直接从DLL文件获取函数指针
原型:Function GetFuncPtr(LibNameOrFullPathOrHandle, FunctionName As String, [RaiseErrorIfNotFound As Boolean]) As Long
● GetStringFromPointerW
简介:从指针所指内存获取字符串
原型:Function GetStringFromPointerW(WStrPtr As Long, [ExpectedMaxLen As Long = 4096]) As String
● HPTimer
简介:获取时间
原型:Function HPTimer() As Double
● IsVistaPlus
简介:是否为 Windows Vista 系统
原型:Function IsVistaPlus() As Boolean
● IsWin7Plus
简介:是否为 Windows 7 系统
原型:Function IsWin7Plus() As Boolean
● IsWin8Plus
简介:是否为 Windows 8 系统
原型:Function IsWin8Plus() As Boolean
● IsXPPlus
简介:是否为 Windows XP 系统
原型:Function IsXPPlus() As Boolean
● JPG
简介:创建JPEG解压缩对象
原型:Function JPG() As cJPG
● JSONArray
简介:创建 JSON 数组对象
原型:Function JSONArray() As cCollection
● JSONDecodeToCollection
简介:将 JSON 转换为 集合 对象
原型:Function JSONDecodeToCollection(strJSON As String, [ParserErrors As String], [StrictParsing As Boolean = True]) As cCollection
● JSONDecodeToCollectionUTF8
简介:将 JSON 转换为 集合对象,JSON字符串为UTF-8编码
原型:Function JSONDecodeToCollectionUTF8(UTF8Bytes() As Byte, [ParserErrors As String], [StrictParsing As Boolean = True]) As cCollection
● JSONObject
简介:创建 JSON 对象 对象
原型:Function JSONObject() As cCollection
● KeyWatcher
简介:创建键盘监听器对象
原型:Function KeyWatcher(VKeysCommaSeparated As String, [WatchAllAppWindows As Boolean], [WatchSystemWide As Boolean]) As cKeyWatcher
● MemCopy
简介:拷贝内存
原型:Sub MemCopy(pDst As Long, pSrc As Long, Bytes As Long)
● MemDB
简介:创建内存数据库对象
原型:Function MemDB() As cMemDB
● MMDeviceEnumerator
简介:创建多媒体硬件枚举器对象
原型:Function () As cMMDeviceEnumerator
● MP3Resource
简介:创建MP3资源对象,使用方法未知
原型:Function MP3Resource() As cMP3Resource
● OneShotTimer
简介:创建触发器型定时器
原型:Function OneShotTimer() As cOneShotTimer
● OOEmbed
简介:创建Open Office对象,未验证
原型:Function OOEmbed([HostingContainerhWnd As Long], [DocFileName As String], [NewDocumentType As DocType = sWriter]) As cOOEmbed
● PhysicsEngine
简介:创建物理引擎对象,常用于游戏开发
原型:Function PhysicsEngine() As cPhysicsEngine
● Properties
简介:创建属性对象
原型:Function Properties() As cProperties
● Recordset
简介:创建数据库记录对象
原型:Function Recordset([ActiveConnection As cConnection], [Content]) As cRecordset
● RegFree
简介:创建COM免注册对象,支持多线程
原型:Function RegFree() As cRegFree
● ReportDocument
简介:创建打印文档对象
原型:Function ReportDocument([MMScaleFactor As Double = 1], [PageWidthInUserUnits As Double = 210], [PageHeightInUserUnits As Double = 297]) As cReportDocument
● ReportPage
简介:创建打印页对象
原型:Function ReportPage([InitDrawMode As Boolean], [Landscape As Boolean]) As cReportPage
● RPCConnection
简介:创建RPC调用连接对象
原型:Function RPCConnection([Host As String], [Port As Long = 22222], [KeepAlive As Boolean = True], [ServerAuthentication As Boolean], [UserName As String], [PassWord As String]) As cRPCConnection
● RPCListener
简介:创建RPC调用监听器对象
原型:Function RPCListener([Host As String], [Port As Long = 22222], [ThreadPoolSize As Long = 8], [ForceAuthentication As Boolean], [AdminPassWord As String], [AllowedGroup As String], [RPCDllsFolder As String], [ReadIniValues As Boolean], [StartServer As Boolean], [DefaultBinaryPathForWebRequests As String], [ToCallBeforeAnyRPC As String]) As cRPCListener
● ShellLink
简介:创建快捷方式对象
原型:Function ShellLink() As cShellLink
● SimpleDOM
简介:创建 XML DOM 对象
原型:Function SimpleDOM([XMLSource As String], [FirstParamIsFileName As Boolean]) As cSimpleDOM
● SimpleSax
简介:创建 XML SAX 对象
原型:Function SimpleSax() As cSimpleSax
● SMBScan
简介:创建 SMB 服务器扫描器对象
原型:Function SMBScan() As cSMBScan
● SortedDictionary
简介:创建有序字典对象
原型:Function SortedDictionary([StringCompareMode As StringCompareModeEnum], [UniqueKeys As Boolean = True]) As cSortedDictionary
● stdCall
简介:以STDCALL约定调用函数指针
原型:Function stdCall(retType As enmRetType, pFunc As Long, ParamArray P() As Variant)
● stdCall
简介:以STDCALL约定调用函数指针,与stdCall区别不明
原型:Function stdCallDirect(retType As enmRetType, pFunc As Long, pArgs As Long, ArgsByteCount As Long)
● Stream
简介:创建数据流对象,类似于ADO中的Stream对象
原型:Function Stream() As cStream
● StringBuilder
简介:创建字符串构造器对象,快速组合字符串
原型:Function StringBuilder() As cStringBuilder
● StringCompare
简介:创建字符串比较器对象,支持多种方式比较
原型:Function StringCompare() As cStringCompare
● SubClass
简介:创建就子类化对象,VB中用处太大了
原型:Function SubClass() As cSubClass
● SVG
简介:创建 SVG 格式分析器对象
原型:Function SVG() As cSVG
● TCPClient
简介:创建 TCP 客户端对象
原型:Function TCPClient() As cTCPClient
● TCPServer
简介:创建 TCP 服务端对象
原型:Function TCPServer([StartListening As Boolean], [Host As String], [Port As Long], [BufferSize As Long = 65536], [MaxConnections As Long = 1024]) As cTCPServer
● TDD
简介:创建类自动化测试对象
原型:Function TDD([TestClass As Object], [TestMethod As String]) As cTDD
● Timer
简介:创建定时器对象,不需要窗体
原型:Function Timer([Interval As Long], [Enabled As Boolean], [Tag]) As cTimer
● Timing
简介:作用未知
原型:Function Timing([Start As Boolean]) As String
● UDP
简介:创建 UDP 网络对象
原型:Function UDP() As cUDP
● vtblCall
简介:以虚拟函数表调用函数
原型:Function vtblCall(retType As VbVarType, punk As Long, vtblIdx As Long, ParamArray P() As Variant)
● WebArchive
简介:创建WEB文档对象,配合WebServer对象使用
原型:Function WebArchive([FileNameOrByteArrayToRead]) As cWebArchive
● WebKit
简介:创建 WebKit 浏览器对象,需要在官网下载 WebKit 插件包,只有一个5M文件
原型:Function WebKit([InititializeWithPath As Boolean], [WebKitDllPath As String]) As cWebKit
● WebServer
简介:创建Web服务器对象,可以实现简单的Web服务
原型:Function WebServer() As cWebServer
更多类的用法,基本都可以见名知意,虽然没有文档,还是拜 Olaf Schmidt 大牛的福,才有了这么多
好用的工具。其中有不少类都可以改变以往VB的开发模型,提高开发和运行效率。
另外,VBRichClient 还有不少子项目托管在 GitHub,VB爱好者可以去关注下,千万别让 VBRichClient 失去
用户,别让 Olaf Schmidt 失去开发的动力,让 VBRichClient 更好的发展!