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関連のカテゴリ】