ヘルパー関数 (メッセージ フック コントロール)

mhGetData 関数

指定されたアドレスのメモリの内容を、変数にコピーします。Message イベント プロシージャ内で使用します。

宣言

VB
Declare Function mhGetData Lib "MsgHk.ocx" (ByVal lParam As Long, ByRef DestBuffer As Any, ByVal BufferSize As Long) As Long

この宣言は、メッセージ フック コントロールのタイプ ライブラリに含まれているため、Visual Basic Version 5.0 でご使用の場合は、Declare ステートメントで宣言する必要はありません。

構文

mhGetData (lparam, destbuffer, buffersize)

mhGetData 関数の構文は、次の引数から構成されます。

指定項目内容
lparamコピー元のメモリ アドレスを指定します。ここには、Message イベントとともに渡される引数 lParam を指定します。
destbufferコピー先の変数を指定します。変数の型は任意です。
buffersizeコピーするサイズをバイト単位で指定します。通常は、LenB (destbuffer) を指定します。

戻り値

destbuffer のアドレスを返します。

解説

Message イベントとともに渡される引数 lParam の内容は、メッセージの種類によって異なります。たいていのメッセージの場合は値そのものですが、メッセージによっては、ユーザ定義型の変数のアドレスが渡されることがあります。Visual Basic には、アドレスを用いて間接的に変数にアクセスする方法がないため、mhGetData 関数を用いて、アドレスが指すメモリの内容を Visual Basic の変数へコピーし、その変数にアクセスすることによってパラメータを取得します。

mhGetData 関数で取得したパラメータを Visual Basic コードで変更し、それを反映させたい場合は、mhSetData 関数を用いて変数の内容を lParam が指すアドレスのメモリへ書き戻します。

destbuffer に NULL ポインタ (0) を渡した場合は、コピーは行われません。

注意

lparam で指定されたメモリのアドレスが有効かどうか、また、buffersize が適切かどうかはチェックされません。したがって、lparambuffersize の指定は慎重に行う必要があります。これらの引数に不正な値を指定すると、アクセスの許可されていないメモリ領域へアクセスすることになり、アプリケーションが異常終了したり、システムが不安定になったりします。また、この関数を使用したコードを実行する前に、ソース コードの保存を行っておくことをお勧めします。この関数は、Message イベント プロシージャ以外では使用しないで下さい。

参照

mhSetData 関数Message イベント使用例

mhSetData 関数

変数の内容を、指定したアドレスのメモリへコピーします。Message イベント プロシージャ内で使用します。

宣言

VB
Declare Function mhSetData Lib "MsgHk.ocx" (ByVal lParam As Long, ByRef SrcBuffer As Any, ByVal BufferSize As Long) As Long

この宣言は、メッセージ フック コントロールのタイプ ライブラリに含まれているため、Visual Basic Version 5.0 でご使用の場合は、Declare ステートメントで宣言する必要はありません。

構文

mhSetData (lparam, srcbuffer, buffersize)

mhSetData 関数の構文は、次の引数から構成されます。

指定項目内容
lparamコピー先のメモリ アドレスを指定します。ここには、Message イベントとともに渡される引数 lParam を指定します。
srcbufferコピー元の変数を指定します。変数の型は任意です。
buffersizeコピーするサイズをバイト単位で指定します。通常は、LenB (srcbuffer) を指定します。

戻り値

srcbuffer のアドレスを返します。

解説

Message イベントとともに渡される引数 lParam の内容は、メッセージの種類によって異なります。たいていのメッセージの場合は値そのものですが、メッセージによっては、ユーザ定義型の変数のアドレスが渡されることがあります。Visual Basic には、アドレスを用いて間接的に変数にアクセスする方法がないため、mhGetData 関数を用いて、アドレスが指すメモリの内容を Visual Basic の変数へコピーし、その変数にアクセスすることによってパラメータを取得します。

mhGetData 関数で取得したパラメータを Visual Basic コードで変更し、それを反映させたい場合は、mhSetData 関数を用いて変数の内容を lParam が指すアドレスのメモリへ書き戻します。

lparam に 0 を渡した場合は、コピーは行われません。

注意

lparam で指定されたメモリのアドレスが有効かどうか、また、buffersize が適切かどうかはチェックされません。したがって、lparambuffersize の指定は慎重に行う必要があります。これらの引数に不正な値を指定すると、アクセスの許可されていないメモリ領域へアクセスすることになり、アプリケーションが異常終了したり、システムが不安定になったりします。また、この関数を使用したコードを実行する前に、ソース コードの保存を行っておくことをお勧めします。この関数は、Message イベント プロシージャ以外では使用しないで下さい。

参照

mhGetData 関数Message イベント使用例