VBScript 内でバイナリファイルを更新するのは、ByteArray というデータ型で文字列を保持する必要があるのですが、VBScript 標準ではそのようなデータ型を作成する事ができません。 しかし、ADODB.Stream を使ってバイナリファイルからデータを Read メソッドで読み出すと、それは ByteArray になります。長い文字列として ByteArray を取得するにはもう少し応用が必要ですが、1バイト単位の ByteArray であれば、先に 256 種類のバイトを格納したファイルを用意しておけば、取得する事ができます。
このデータを使って、ビットマップファイルを更新するのであれば、色コードの表現は 1バイトづつなので、例えば 32 x 32 の24ビットマップを全て赤に設定しておいて、緑やその他の色に変更する事は容易になります。
※ 赤枠部分が色コードで、それが連続して、32 x 32 セット存在します
Set Fso = CreateObject( "Scripting.FileSystemObject" )
Set Stream = CreateObject("ADODB.Stream")
Set StreamTable = CreateObject("ADODB.Stream")
strCurPath = WScript.ScriptFullName
Set obj = Fso.GetFile( strCurPath )
Set obj = obj.ParentFolder
strCurPath = obj.Path
strFullPath = Fso.GetAbsolutePathName( strCurPath & "\red.bmp" )
StreamTable.Open
StreamTable.Type = 1 ' バイナリ
StreamTable.LoadFromFile strCurPath & "\byte_array.dat"
Stream.Open
Stream.Type = 1 ' バイナリ
Stream.LoadFromFile strFullPath
For I = 1 to 32*32
Stream.Position = 16*3+(I-1)*3+7 ' Green 位置
Stream.Write GetByteArray(255)
Stream.Position = 16*3+(I-1)*3+8 ' Red 位置
Stream.Write GetByteArray(0)
Next
Stream.SaveToFile strCurPath & "\green.bmp", 2
Stream.Close
StreamTable.Close
Function GetByteArray( nData )
StreamTable.Position = nData
GetByteArray = StreamTable.Read(1)
End Function
※ strCurPath は、スクリプトが存在するフォルダになります。 ※ GetByteArray は、1バイトの ByteArray データを取得します CAPICOM をインストールすると、容易に ByteArray を扱えるようになります。 CAPICOM は、標準の Windows ではインストールされないと思いますが、Microsoft の何かの開発系ソフトウェアをインストールするとインストールされてしまっている可能性はあります。 CAPICOM には、Utilities object が存在し、以下のような便利なメソッドが揃っています。 ※ Set CAPIUtil = CreateObject( "CAPICOM.Utilities" ) でオブジェクトを作成してメソッドを使用
| Method | Description |
|---|---|
| Base64Decode | Decodes a string from base64. |
| Base64Encode | Encodes a string as base64. |
| BinaryStringToByteArray | Converts a binary-packed string to an array of bytes. |
| BinaryToHex | Converts a binary-packed string to a hexadecimal string. |
| ByteArrayToBinaryString | Converts an array of bytes to a binary-packed string. |
| GetRandom | Generates a secure random number. |
| HexToBinary | Converts a hexadecimal string to a binary-packed string. |
| LocalTimeToUTCTime | Converts the computer's local time to Coordinated Universal Time. |
| UTCTimeToLocalTime | Converts Coordinated Universal Time to the computer's local time. |
BinaryString は、VBscript で表現されている通常の文字列です。例えば、ChrB(0) 等のデータを含むバイナリデターであるという意味です
VBScriptドキュメント
|
|
【VBS + オブジェクトの最新記事】
- 簡易詳細設計書(A4)作成 : VBScript + Excel.Application
- VBScript : 複数テキストファイルの charset(キャラクタセット) 一括変換 / ADODB.Stream
- VBScript : 既存の Excel を PDF に変換する ( ExportAsFixedFormat )
- テーブル設計書作成 : VBScript + Excel.Application + SQLServer
- VBScript : Excel.Application でファイルを複数選択する
- ブラウザ上にあるデータを PHP で受け取って、VBScript のコードを作成して事前に作成済のテンプレート Excel にデータをロードして印刷で使用する
- VBScript : Access のテーブルを TransferText メソッドを使用して UTF-8 で CSV または HTML にして出力する
- VBScript : ネイティブ(CAPICOM.Utilities) Base64 エンコード
- VBScript で、スクリプト(Windows Script Component)をオブジェクトとして直接使う方法
- VBScript : ini ファイルの値を取得する
- VBS : My Documents フォルダのような、特殊フォルダのサイズを取得する
- VBScript : ネイティブ SHA1、MD5、SHA256 変換
【VBScript関連のカテゴリ】



このデータを使って、ビットマップファイルを更新するのであれば、色コードの表現は 1バイトづつなので、例えば 32 x 32 の24ビットマップを全て赤に設定しておいて、緑やその他の色に変更する事は容易になります。
※ 赤枠部分が色コードで、それが連続して、32 x 32 セット存在します




