Hello, Win32 API(VBScript) World!
Posted on 4月 20th, 2012 by cx20
Win32 API(VBScript)
Win32 API は、Windows の機能にアクセスする為の API(Application Programming Interface)である。VBScript には Win32 API を直接呼び出す機能は存在しないが、他のコンポーネントを経由することで、呼び出すことが可能である。
Win32 API を呼び出すことが可能なコンポーネントとしては「DynamicWrapper」「SFC mini」「Excel」等がある。
以下は DynamicWrapper を経由した Win32 API 呼出し例である。
ソースコード(VBScript + COM + DynamicWrapper + Win32 API)
Option Explicit Call Main() Sub Main() Dim win32 Set win32 = CreateObject("DynamicWrapper") win32.Register "user32.dll", "MessageBoxA", "i=hssu", "f=s", "r=l" win32.MessageBoxA Null, "Hello, Win32 API(VBScript) World!", "Hello, World!", 0 End Sub |
以下は SFC mini を経由した Win32 API 呼出し例である。
ソースコード(VBScript + COM + SFC mini + Win32 API)
Option Explicit Call Main() Sub Main() Dim MessageBox Set MessageBox = CreateObject("SfcMini.DynaCall") MessageBox.Declare "user32", "MessageBoxA" MessageBox 0, "Hello, Win32 API(VBScript) World!", "Hello, World!", vbOkOnly End Sub |
以下は Excel を経由した Win32 API 呼出し例である。実際には、Excel の「Call 関数」を ExecuteExcel4Macro メソッド経由で呼び出す例となっている。
ソースコード(VBScript + COM + Excel + Call 関数 + Win32 API)
Option Explicit Call Main() Sub Main() Dim excel Set excel = CreateObject("Excel.Application") Dim strMacro strMacro = "CALL('user32', 'MessageBoxA', 'JJCCJ', 0, 'Hello, Win32 API(VBScript) World!', 'Hello, World!', 0)" strMacro = Replace( strMacro, "'", """" ) excel.ExecuteExcel4Macro( strMacro ) End Sub |
なお、Call 関数で使用している、”JJCCJ” のコード値は MessageBoxA 関数の戻り値ならびに各引数のデータ型に対応している。詳細は「CALL 関数と REGISTER 関数の使い方」を参照のこと。
コード | 説明 | 渡す方法 | C 言語での宣言 |
---|---|---|---|
A | 論理値 (FALSE = 0、TRUE = 1) | 値 | short int |
B | IEEE 8 バイト浮動小数点数 | 値 (Windows) 参照 (Macintosh) |
double (Windows) double * (Macintosh) |
C | 末尾が Null の文字列 (最大文字列長 = 255) | 参照 | char * |
D | バイト数を含む文字列 (先頭バイトが文字列の長さ、最大文字列長 = 255) | 参照 | unsigned char * |
E | IEEE 8 バイト浮動小数点数 | 参照 | double * |
F | 末尾が Null の文字列 (最大文字列長 = 255) | 参照 (指定した引数の変更) | char * |
G | バイト数を含む文字列 (先頭バイトが文字列の長さ、最大文字列長 = 255) | 参照 (指定した引数の変更) | unsigned char * |
H | 符号なし 2 バイト整数 | 値 | unsigned short int |
I | 符号付き 2 バイト整数 | 値 | short int |
J | 符号付き 4 バイト整数 | 値 | long int |
K | 配列 | 参照 | FP * |
L | 論理値 (FALSE = 0、TRUE = 1) | 参照 | short int * |
M | 符号付き 2 バイト整数 | 参照 | short int * |
N | 符号付き 4 バイト整数 | 参照 | long int * |
O | 配列 | 参照 | 引数は次の 3 種類 unsigned short int * unsigned short int * double [ ] |
P | Excel の OPER データ構造体 | 参照 | OPER * |
R | Excel の XLOPER データ構造体 | 参照 | XLOPER * |
実行方法
C:¥> CSciprt hello.vbs |
実行結果
--------------------------- Hello, World! --------------------------- Hello, Win32 API(VBScript) World! --------------------------- OK --------------------------- |
Tags: Win32 API