使用 VBRichClient 庫(kù)
====================
世上竟然還有如此牛人(Olaf Schmidt)為VB開(kāi)發(fā)了如此牛的擴(kuò)展庫(kù)!它還有一個(gè)偉大的目標(biāo):
擺脫 Microsoft COM 的依賴,更容易實(shí)現(xiàn)平臺(tái)移植性(基于新的經(jīng)典VB編譯器),現(xiàn)在的
VBRichClient正是為達(dá)到該目標(biāo)的一個(gè)去耦框架。
它能做什么?簡(jiǎn)單說(shuō)能提供以下VB沒(méi)有或很難實(shí)現(xiàn)的功能:多線程、函數(shù)指針調(diào)用、數(shù)組列表、高級(jí)集合類
內(nèi)存數(shù)據(jù)庫(kù)、XML DOM/SAX訪問(wèn)、子類化、公式計(jì)算、SGDI封裝、各種加密和壓縮算法、文件處理、網(wǎng)絡(luò)Socket、
簡(jiǎn)單下載、JSON、JPG壓縮解碼、音頻設(shè)備訪問(wèn)、物理引擎、Webkit瀏覽器、QLite數(shù)據(jù)庫(kù)、基于Cairo的2D繪圖、
打印、RPC、Web服務(wù)器…… 多到你想不到的功能,而且一直在不斷擴(kuò)展中。
VBRichClient 官方網(wǎng)站 http://www.VBRichClient.com/
歡迎登陸以上網(wǎng)站,關(guān)注最新消息,還有其它更多內(nèi)容。這里有經(jīng)典VB的未來(lái)!
由于官網(wǎng)也沒(méi)有太多的幫助文檔,所以只能通過(guò)摸索逐步熟悉該庫(kù)的使用,好在涉及命名都比較通俗易懂,
雖然沒(méi)有文檔,理解起來(lái)基本也沒(méi)有太大難度。還有通過(guò)非官方網(wǎng)站,可以下載到 3.0 版本的庫(kù),里面有不少
示例可以參考。
1、VBRichClient 的引用
是的,你完全可以不對(duì)它進(jìn)行引用!就可以使用它的功能!參考【使用 DirectCOM 庫(kù)】
當(dāng)然你也可以按熟悉的常規(guī)方法,通過(guò)注冊(cè)引用該庫(kù)
2、VBRichClient 的分發(fā)
如果采用引用方式使用,則需要將 vbRichClient5.dll 和 vb_cairo_sqlite.dll 一起復(fù)制到程序目錄,并
對(duì) vbRichClient5.dll 進(jìn)行注冊(cè)。
如果采用免注冊(cè)方法使用,則還需要將 DirectCOM.dll 一并復(fù)制到程序目錄或System目錄。
3、VBRichClient 的使用
VBRichClient 是個(gè)相當(dāng)龐大的庫(kù),需要花一些時(shí)間熟悉里面的類,最簡(jiǎn)單的辦法就是使用其中的 cConstructor
類直接“生產(chǎn)”其它的對(duì)象。使用 DirectCOM 免注冊(cè)使用,則必須使用 cConstructor 訪問(wèn)其他類。
dim rcConstructor as object
dim rcMemDB as object
set rcConstructor = DirectCom_Create("vbRichClient5.dll", "cConstructor")
set rcMemDB = rcConstructor.MemDB()
rcMemDB.xxx
4、cConstructor 成員列表
● ArrayList
簡(jiǎn)介:創(chuàng)建數(shù)組列表對(duì)象,支持動(dòng)態(tài)添加、移除,也可以當(dāng)隊(duì)列或者棧來(lái)用,支持排序
原型:Function ArrayList(vType As VbVarType, ParamArray P() As Variant) As cArrayList
● AudioCaptureClient
簡(jiǎn)介:創(chuàng)建捕捉音頻對(duì)象
原型:Function AudioCaptureClient() As cAudioCaptureClient
● AudioRenderClient
簡(jiǎn)介:創(chuàng)建播放音頻對(duì)象
原型:Function AudioRenderClient() As cAudioRenderClient
● Cairo
簡(jiǎn)介:創(chuàng)建 Cairo 2D 繪圖對(duì)象,支持許多高級(jí)繪圖函數(shù),比如反鋸齒,透明,文字,變形……
原型:Function Cairo() As cCairo
● cdeclCall
簡(jiǎn)介:以CDECLCALL約定調(diào)用函數(shù)指針
原型:Function cdeclCall(retType As enmRetType, pFunc As Long, ParamArray P() As Variant)
● cdeclCallDirect
簡(jiǎn)介:以CDECLCALL約定調(diào)用函數(shù)指針,與cdeclCall區(qū)別不明
原型:Function cdeclCallDirect(retType As enmRetType, pFunc As Long, pArgs As Long, ArgsByteCount As Long)
● CleanupRichClientDll
簡(jiǎn)介:清空VBRichClient的臨時(shí)文件?未驗(yàn)證
原型:Sub CleanupRichClientDll()
● ClipBoard
簡(jiǎn)介:創(chuàng)建剪切板對(duì)象,比VB自帶的對(duì)象好用
原型:Function ClipBoard() As cUniClipBoard
● CodePageMapping
簡(jiǎn)介:創(chuàng)建編碼和代碼頁(yè)映射對(duì)象
原型:Function CodePageMapping() As cCodePageMapping
● Collection
簡(jiǎn)介:創(chuàng)建集合對(duì)象,該對(duì)象比VB自帶的Collection和Scripting.Dictionary有更多的功能
原型:Function Collection([CompatibleToVBCollection As Boolean = True], [StringCompareMode As StringCompareModeEnum = 1], [UniqueKeys As Boolean = True], [Content]) As cCollection
● ControlPoints
簡(jiǎn)介:創(chuàng)建控制點(diǎn)對(duì)象,用來(lái)在2D繪圖中控制形狀或曲線的參數(shù)
原型:Function ControlPoints() As cControlPoints
● Converter
簡(jiǎn)介:創(chuàng)建轉(zhuǎn)換數(shù)據(jù)庫(kù)對(duì)象
原型:Function Converter([CaseInSensitiveTextColumns_ConformToJet As Boolean]) As cConverter
● CreateInstanceUnk
簡(jiǎn)介:通過(guò)注冊(cè)表中的 ClsID 和 IID 直接創(chuàng)建COM對(duì)象
原型:Function CreateInstanceUnk(ClsID As String, IID As String) As IUnknown
● Crypt
簡(jiǎn)介:創(chuàng)建加密對(duì)象,該對(duì)象支持各種常見(jiàn)加密解密算法和壓縮算法
原型:Function Crypt() As cCrypt
● DataObjectFiles
簡(jiǎn)介:創(chuàng)建數(shù)據(jù)對(duì)象文件
原型:Function DataObjectFiles() As cDataObjectFiles
● DataSource
簡(jiǎn)介:創(chuàng)建數(shù)據(jù)源對(duì)象
原型:Function DataSource() As cDataSource
● DC
簡(jiǎn)介:創(chuàng)建設(shè)備上下文對(duì)象,GDI繪圖用
原型:Function DC([DIB As cDIB], [DDB As cDDB]) As cDC
● DDB
簡(jiǎn)介:創(chuàng)建設(shè)備相關(guān)位圖對(duì)象,GDI繪圖用
原型:Function DDB([dx As Long], [dy As Long], [Picture As StdPicture], [PictureBytes]) As cDDB
● DIB
簡(jiǎn)介:創(chuàng)建設(shè)備無(wú)關(guān)位圖對(duì)象,GDI繪圖用
原型:Function DIB([dx As Long], [dy As Long], [Picture As StdPicture], [PictureBytes], [IconBytes], [UseIconDefaultSize As Boolean], [DesiredIconSize As Long]) As cDIB
● Displays
簡(jiǎn)介:創(chuàng)建顯示器對(duì)象,支持多顯示器,獲取顯示器硬件參數(shù)
原型:Function Displays() As cDisplays
● Downloads
簡(jiǎn)介:創(chuàng)建簡(jiǎn)單下載對(duì)象,支持進(jìn)度報(bào)告
原型:Function Downloads() As cDownloads
● EventCollection
簡(jiǎn)介:創(chuàng)建事件集合對(duì)象,作用暫未知
原型:Function EventCollection() As cEventCollection
● Formula
簡(jiǎn)介:創(chuàng)建公式對(duì)象,對(duì)包含計(jì)算公式的字符串求值
原型:Function Formula() As cFormula
● FSO
簡(jiǎn)介:創(chuàng)建文件系統(tǒng)對(duì)象,與Scripting.FileSystemObject類似,但有更多新功能,比如打開(kāi)保存文件對(duì)話框、獲取臨時(shí)文件、獲取各種特殊文件夾……
原型:Function FSO([CreateFreshInstance As Boolean]) As cFSO
● GestureConfigList
簡(jiǎn)介:作用暫未知
原型:Function GestureConfigList() As cGestureConfigList
● GetCPUCoresCount
簡(jiǎn)介:獲取CPU核心數(shù)
原型:Function GetCPUCoresCount() As Long
● GetFuncPtr
簡(jiǎn)介:獲取直接從DLL文件獲取函數(shù)指針
原型:Function GetFuncPtr(LibNameOrFullPathOrHandle, FunctionName As String, [RaiseErrorIfNotFound As Boolean]) As Long
● GetStringFromPointerW
簡(jiǎn)介:從指針?biāo)竷?nèi)存獲取字符串
原型:Function GetStringFromPointerW(WStrPtr As Long, [ExpectedMaxLen As Long = 4096]) As String
● HPTimer
簡(jiǎn)介:獲取時(shí)間
原型:Function HPTimer() As Double
● IsVistaPlus
簡(jiǎn)介:是否為 Windows Vista 系統(tǒng)
原型:Function IsVistaPlus() As Boolean
● IsWin7Plus
簡(jiǎn)介:是否為 Windows 7 系統(tǒng)
原型:Function IsWin7Plus() As Boolean
● IsWin8Plus
簡(jiǎn)介:是否為 Windows 8 系統(tǒng)
原型:Function IsWin8Plus() As Boolean
● IsXPPlus
簡(jiǎn)介:是否為 Windows XP 系統(tǒng)
原型:Function IsXPPlus() As Boolean
● JPG
簡(jiǎn)介:創(chuàng)建JPEG解壓縮對(duì)象
原型:Function JPG() As cJPG
● JSONArray
簡(jiǎn)介:創(chuàng)建 JSON 數(shù)組對(duì)象
原型:Function JSONArray() As cCollection
● JSONDecodeToCollection
簡(jiǎn)介:將 JSON 轉(zhuǎn)換為 集合 對(duì)象
原型:Function JSONDecodeToCollection(strJSON As String, [ParserErrors As String], [StrictParsing As Boolean = True]) As cCollection
● JSONDecodeToCollectionUTF8
簡(jiǎn)介:將 JSON 轉(zhuǎn)換為 集合對(duì)象,JSON字符串為UTF-8編碼
原型:Function JSONDecodeToCollectionUTF8(UTF8Bytes() As Byte, [ParserErrors As String], [StrictParsing As Boolean = True]) As cCollection
● JSONObject
簡(jiǎn)介:創(chuàng)建 JSON 對(duì)象 對(duì)象
原型:Function JSONObject() As cCollection
● KeyWatcher
簡(jiǎn)介:創(chuàng)建鍵盤監(jiān)聽(tīng)器對(duì)象
原型:Function KeyWatcher(VKeysCommaSeparated As String, [WatchAllAppWindows As Boolean], [WatchSystemWide As Boolean]) As cKeyWatcher
● MemCopy
簡(jiǎn)介:拷貝內(nèi)存
原型:Sub MemCopy(pDst As Long, pSrc As Long, Bytes As Long)
● MemDB
簡(jiǎn)介:創(chuàng)建內(nèi)存數(shù)據(jù)庫(kù)對(duì)象
原型:Function MemDB() As cMemDB
● MMDeviceEnumerator
簡(jiǎn)介:創(chuàng)建多媒體硬件枚舉器對(duì)象
原型:Function () As cMMDeviceEnumerator
● MP3Resource
簡(jiǎn)介:創(chuàng)建MP3資源對(duì)象,使用方法未知
原型:Function MP3Resource() As cMP3Resource
● OneShotTimer
簡(jiǎn)介:創(chuàng)建觸發(fā)器型定時(shí)器
原型:Function OneShotTimer() As cOneShotTimer
● OOEmbed
簡(jiǎn)介:創(chuàng)建Open Office對(duì)象,未驗(yàn)證
原型:Function OOEmbed([HostingContainerhWnd As Long], [DocFileName As String], [NewDocumentType As DocType = sWriter]) As cOOEmbed
● PhysicsEngine
簡(jiǎn)介:創(chuàng)建物理引擎對(duì)象,常用于游戲開(kāi)發(fā)
原型:Function PhysicsEngine() As cPhysicsEngine
● Properties
簡(jiǎn)介:創(chuàng)建屬性對(duì)象
原型:Function Properties() As cProperties
● Recordset
簡(jiǎn)介:創(chuàng)建數(shù)據(jù)庫(kù)記錄對(duì)象
原型:Function Recordset([ActiveConnection As cConnection], [Content]) As cRecordset
● RegFree
簡(jiǎn)介:創(chuàng)建COM免注冊(cè)對(duì)象,支持多線程
原型:Function RegFree() As cRegFree
● ReportDocument
簡(jiǎn)介:創(chuàng)建打印文檔對(duì)象
原型:Function ReportDocument([MMScaleFactor As Double = 1], [PageWidthInUserUnits As Double = 210], [PageHeightInUserUnits As Double = 297]) As cReportDocument
● ReportPage
簡(jiǎn)介:創(chuàng)建打印頁(yè)對(duì)象
原型:Function ReportPage([InitDrawMode As Boolean], [Landscape As Boolean]) As cReportPage
● RPCConnection
簡(jiǎn)介:創(chuàng)建RPC調(diào)用連接對(duì)象
原型: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
簡(jiǎn)介:創(chuàng)建RPC調(diào)用監(jiān)聽(tīng)器對(duì)象
原型: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
簡(jiǎn)介:創(chuàng)建快捷方式對(duì)象
原型:Function ShellLink() As cShellLink
● SimpleDOM
簡(jiǎn)介:創(chuàng)建 XML DOM 對(duì)象
原型:Function SimpleDOM([XMLSource As String], [FirstParamIsFileName As Boolean]) As cSimpleDOM
● SimpleSax
簡(jiǎn)介:創(chuàng)建 XML SAX 對(duì)象
原型:Function SimpleSax() As cSimpleSax
● SMBScan
簡(jiǎn)介:創(chuàng)建 SMB 服務(wù)器掃描器對(duì)象
原型:Function SMBScan() As cSMBScan
● SortedDictionary
簡(jiǎn)介:創(chuàng)建有序字典對(duì)象
原型:Function SortedDictionary([StringCompareMode As StringCompareModeEnum], [UniqueKeys As Boolean = True]) As cSortedDictionary
● stdCall
簡(jiǎn)介:以STDCALL約定調(diào)用函數(shù)指針
原型:Function stdCall(retType As enmRetType, pFunc As Long, ParamArray P() As Variant)
● stdCall
簡(jiǎn)介:以STDCALL約定調(diào)用函數(shù)指針,與stdCall區(qū)別不明
原型:Function stdCallDirect(retType As enmRetType, pFunc As Long, pArgs As Long, ArgsByteCount As Long)
● Stream
簡(jiǎn)介:創(chuàng)建數(shù)據(jù)流對(duì)象,類似于ADO中的Stream對(duì)象
原型:Function Stream() As cStream
● StringBuilder
簡(jiǎn)介:創(chuàng)建字符串構(gòu)造器對(duì)象,快速組合字符串
原型:Function StringBuilder() As cStringBuilder
● StringCompare
簡(jiǎn)介:創(chuàng)建字符串比較器對(duì)象,支持多種方式比較
原型:Function StringCompare() As cStringCompare
● SubClass
簡(jiǎn)介:創(chuàng)建就子類化對(duì)象,VB中用處太大了
原型:Function SubClass() As cSubClass
● SVG
簡(jiǎn)介:創(chuàng)建 SVG 格式分析器對(duì)象
原型:Function SVG() As cSVG
● TCPClient
簡(jiǎn)介:創(chuàng)建 TCP 客戶端對(duì)象
原型:Function TCPClient() As cTCPClient
● TCPServer
簡(jiǎn)介:創(chuàng)建 TCP 服務(wù)端對(duì)象
原型:Function TCPServer([StartListening As Boolean], [Host As String], [Port As Long], [BufferSize As Long = 65536], [MaxConnections As Long = 1024]) As cTCPServer
● TDD
簡(jiǎn)介:創(chuàng)建類自動(dòng)化測(cè)試對(duì)象
原型:Function TDD([TestClass As Object], [TestMethod As String]) As cTDD
● Timer
簡(jiǎn)介:創(chuàng)建定時(shí)器對(duì)象,不需要窗體
原型:Function Timer([Interval As Long], [Enabled As Boolean], [Tag]) As cTimer
● Timing
簡(jiǎn)介:作用未知
原型:Function Timing([Start As Boolean]) As String
● UDP
簡(jiǎn)介:創(chuàng)建 UDP 網(wǎng)絡(luò)對(duì)象
原型:Function UDP() As cUDP
● vtblCall
簡(jiǎn)介:以虛擬函數(shù)表調(diào)用函數(shù)
原型:Function vtblCall(retType As VbVarType, punk As Long, vtblIdx As Long, ParamArray P() As Variant)
● WebArchive
簡(jiǎn)介:創(chuàng)建WEB文檔對(duì)象,配合WebServer對(duì)象使用
原型:Function WebArchive([FileNameOrByteArrayToRead]) As cWebArchive
● WebKit
簡(jiǎn)介:創(chuàng)建 WebKit 瀏覽器對(duì)象,需要在官網(wǎng)下載 WebKit 插件包,只有一個(gè)5M文件
原型:Function WebKit([InititializeWithPath As Boolean], [WebKitDllPath As String]) As cWebKit
● WebServer
簡(jiǎn)介:創(chuàng)建Web服務(wù)器對(duì)象,可以實(shí)現(xiàn)簡(jiǎn)單的Web服務(wù)
原型:Function WebServer() As cWebServer
更多類的用法,基本都可以見(jiàn)名知意,雖然沒(méi)有文檔,還是拜 Olaf Schmidt 大牛的福,才有了這么多
好用的工具。其中有不少類都可以改變以往VB的開(kāi)發(fā)模型,提高開(kāi)發(fā)和運(yùn)行效率。
另外,VBRichClient 還有不少子項(xiàng)目托管在 GitHub,VB愛(ài)好者可以去關(guān)注下,千萬(wàn)別讓 VBRichClient 失去
用戶,別讓 Olaf Schmidt 失去開(kāi)發(fā)的動(dòng)力,讓 VBRichClient 更好的發(fā)展!