仕事上でVisual Basic(以下VBと略す)を使うことになったのですが、
VBではC系言語のようにポインタを使うことができず、C系言語で作られたDLLの関数(メソッド)を呼び出す際に
みなさん苦労されているようにネット検索をして感じました。
それでまあ、自分の持っているC言語のスキルを利用して、VBしか使われていない方のための
ごく簡単なDLLを作りました。
VB 6.0の頃に在った VerPtr の代わりをしようというものです。
GetAdr.dll (6,656byte)![]()
【使い方】
(1)GetAdr.dll をVBの実行ファイル(.exe)のあるフォルダにコピーして下さい。
(2)ご使用になりたい Class の中に次のように宣言してください。
Public Declare Function GetAdr Lib "GetAdr.dll" (ByRef ptr As Integer) As Integer
戻り値としてアドレスが返ります。
引数の型は、Integerの他にByte,Char,Short,Longなど、通常の型が使えます。
ただし、String は使えません。VB は String に対して特別な扱いをしているようなので、
String に限っては ByRef を宣言しても、正直にアドレスを渡すようなことはしないようなのです。
いくつかの型で使用したい場合は、Overloads を宣言すると便利です。
<例>
Public Overloads Declare Function GetAdr Lib "GetAdr.dll" (ByRef ptr As Byte) As Integer
Public Overloads Declare Function GetAdr Lib "GetAdr.dll" (ByRef ptr As IntPtr) As Integer
【注意】
本ライブラリは Microsoft Visual C++ 2010 Express で作られています。
Windows XP 上でしかテストしていませんが、本当に簡単な中身なので、大抵のWindowsで動作すると想います。
64Bit OS には対応しておりません。(64Bit OSだと、戻り値を Long になるものを作る必要がある)
アドレスを使う行為は、アンセーフなものなので、うかつなことをするとシステムを破壊します。
なにか起きても当方では責任を取れません。
自己責任をもって注意して使ってください。
ホームへ