WSHでWin32APIを呼び出す-その3
2005年6月29日
(←戻る)
先のVB バージョンのプログラムを順に見てゆき、VBscriptとの互換性を考えてみることにする。
2行目でいきなりつまずいてしまった。『Type...End Type ステートメント』はVBscriptには含まれていない機能である。どのように解決すればよいだろうか。
『Type...End Type』で定義されたユーザ型をWinAPIで呼び出す時はすべて、参照呼び出しである。ということは、『Type...End Type』で定義したものを同じ構造をメモリの中に構築し、その構造のアドレスを渡せばよいということになる。
先のサンプルアプリケーション『TestApplication』と同様のものをCで作成し、ブレークポイントで実行を止めてstWndClass(ユーザ定義型:WNDCLASSEX)のメモリ上での構造を見た結果が次である。
また、stPaint(ユーザ定義型:PAINTSTRUCT)は次の通り。
これらの結果を参考に、同じ構造をバイトアレイにしてメモリ上に構築し、その参照アドレスを与えればよいことになる。その構築については、次回以降に。
(続く)
先のVB バージョンのプログラムを順に見てゆき、VBscriptとの互換性を考えてみることにする。
Option Explicit
Type POINTAPI
x As Long
y As Long
End Type
Type POINTAPI
x As Long
y As Long
End Type
2行目でいきなりつまずいてしまった。『Type...End Type ステートメント』はVBscriptには含まれていない機能である。どのように解決すればよいだろうか。
『Type...End Type』で定義されたユーザ型をWinAPIで呼び出す時はすべて、参照呼び出しである。ということは、『Type...End Type』で定義したものを同じ構造をメモリの中に構築し、その構造のアドレスを渡せばよいということになる。
先のサンプルアプリケーション『TestApplication』と同様のものをCで作成し、ブレークポイントで実行を止めてstWndClass(ユーザ定義型:WNDCLASSEX)のメモリ上での構造を見た結果が次である。
また、stPaint(ユーザ定義型:PAINTSTRUCT)は次の通り。
これらの結果を参考に、同じ構造をバイトアレイにしてメモリ上に構築し、その参照アドレスを与えればよいことになる。その構築については、次回以降に。
(続く)