国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > VBScript > 正文

用VBS讀寫二進制文件的另一種方法分享

2019-10-26 18:06:02
字體:
來源:轉載
供稿:網友
之前寫的那篇給出的方法雖然不錯,但是當文件過大時(其實很小,也就幾M),對應的數組也會很大,然后會出現運行時錯誤,提示內存耗盡,為此我郁悶了好久。

最近在博客的流量記錄中發現百度關鍵字“一些很惡作劇的vbs程序”(看來現在的年輕人很喜歡玩這口),于是打開久違的百度搜索了一下,發現出現在第三。出現在第二的是百度HI,上面也是一個惡作劇程序,而且還是加密的。我嘗試著解密,卻發現這個加密似乎比前幾天解密的那個病毒更變態,未果。

雖然我沒有把那個程序解密出來(如果哪位真正的高手會,麻煩指點一下),但是從中領悟出了用VBS讀寫二進制文件的另一種方法,即Microsoft.XMLDOM+ADODB.Stream。這個方法的效率比原來那個高得多,而且似乎沒有文件大小限制。
復制代碼 代碼如下:

Function ReadBinary(FileName)
Const adTypeBinary = 1
Dim stream, xmldom, node
Set xmldom = CreateObject("Microsoft.XMLDOM")
Set node = xmldom.CreateElement("binary")
node.DataType = "bin.hex"
Set stream = CreateObject("ADODB.Stream")
stream.Type = adTypeBinary
stream.Open
stream.LoadFromFile FileName
node.NodeTypedValue = stream.Read
stream.Close
Set stream = Nothing
ReadBinary = node.Text
Set node = Nothing
Set xmldom = Nothing
End Function

函數的參數是要讀取的文件路徑,返回值是包含二進制文件的十六進制值的字符串。
復制代碼 代碼如下:

Sub WriteBinary(FileName, Buf)
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
Dim stream, xmldom, node
Set xmldom = CreateObject("Microsoft.XMLDOM")
Set node = xmldom.CreateElement("binary")
node.DataType = "bin.hex"
node.Text = Buf
Set stream = CreateObject("ADODB.Stream")
stream.Type = adTypeBinary
stream.Open
stream.write node.NodeTypedValue
stream.saveToFile FileName, adSaveCreateOverWrite
stream.Close
Set stream = Nothing
Set node = Nothing
Set xmldom = Nothing
End Sub

第一個參數是要讀入的文件路徑,第二個參數是包含二進制文件的十六進制值的字符串。至于如何獲得二進制文件的十六進制值,那方法就很多了,最簡單的方法當然就是用fso對象將ReadBinary函數的返回值寫到文本文件中去,然后Ctrl+C,Ctrl+V。其實用十六進制工具也很簡單。

其他的就不多說了,看不懂的多看看MSDN參考文檔。寫了一個示例程序,里面包含了天空之城音樂的所有數據,雙擊后在同一文件夾生成天空之城的MP3文件并播放。

原文:http://demon.tw/programming/vbs-binary-file-another.html
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 霍林郭勒市| 张北县| 芮城县| 来安县| 塔城市| 哈巴河县| 枣阳市| 黑河市| 独山县| 吕梁市| 青州市| 偃师市| 固始县| 青州市| 保德县| 耒阳市| 滨州市| 扬中市| 临夏市| 马尔康县| 沁水县| 罗江县| 泰州市| 咸丰县| 夏河县| 怀柔区| 方城县| 文昌市| 富宁县| 红原县| 新津县| 和林格尔县| 瑞金市| 淮安市| 阳西县| 顺平县| 开化县| 云龙县| 天台县| 罗定市| 玉树县|