Hello, Win32 API(VB.NET) World!

Posted on 4月 24th, 2012 by cx20

Win32 API(VB.NET)

Win32 API は、Windows の機能にアクセスする為の API(Application Programming Interface)である。
以下は VB.NET にて Declare ステートメントを用いた呼出し例である。

ソースコード

Imports System
Imports System.Runtime.InteropServices
 
Module Hello
    Declare Auto Function MessageBox Lib "user32.dll" Alias "MessageBox" ( _
        ByVal hWnd As IntPtr, _
        ByVal lpText As String, _
        ByVal lpCaption As String, _
        ByVal nType As UInteger _
    ) As Integer
 
    Sub Main()
        MessageBox( New IntPtr(0), "Hello, Win32 API(VB.NET) World!", "Hello, World!", 0 )
    End Sub
End Module

「文字セット」に「Auto」を指定した場合は「エイリアス名」「プラットフォーム」に応じて、呼び出される API 関数名が自動判別される。
「文字セット」に「Ansi」もしくは「Unicode」を指定した場合は「エイリアス名」が API 関数名として使用される為、”A” / “W” のどちらのバージョンであるか明示的に指定する必要がある。(指定を行わない場合、関数名が見つからずエラーとなる)

文字セット指定 エイリアス名 プラットフォーム 文字変換 判別 API関数名
Auto MessageBox Windows 9x系 ANSI “A” MessageBoxA
Auto MessageBox Windows NT系 Unicode “W” MessageBoxW
Ansi または 省略 MessageBox ANSI Not Found
Ansi または 省略 MessageBoxA ANSI MessageBoxA
Unicode MessageBox Unicode Not Found
Unicode MessageBoxW Unicode MessageBoxW

また、Win32 データ型と VB.NET データ型の対応は主に以下のようになっている。「(2.0)」は、.NET Framework 2.0 で追加された型を示す。文字関連の型に関しては文字セット指定が必要なことに注意。

Win32 データ型 C/C++ データ型 .NET データ型 VB.NET データ型
HANDLE void * IntPtr
BYTE unsigned char Byte Byte
SHORT short Int16 Short
WORD unsigned short UInt16 UShort (2.0)
INT int Int32 Integer
UINT unsigned int UInt32 UInteger (2.0)
LONG long Int32 Integer
BOOL int Int32 Integer
DWORD unsigned long UInt32 UInteger (2.0)
ULONG unsigned long UInt32 UInteger (2.0)
CHAR char Char (Ansi) Char (Ansi)
WCHAR wchar_t Char (Unicode) Char (Unicode)
LPSTR char * StringBuilder (Ansi)
LPCSTR const char * String (Ansi) String (Ansi)
LPWSTR wchar_t * StringBuilder (Unicode)
LPCWSTR const wchar_t * String (Unicode) String (Unicode)
FLOAT float Single Single
DOUBLE double Double Double

コンパイル方法

C:¥> vbc Hello.vb

実行結果

---------------------------
Hello, World!
---------------------------
Hello, Win32 API(VB.NET) World!
---------------------------
OK   
---------------------------

Tags:

Categories: .NET, library, VB.NET, Win32 API

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

WP-SpamFree by Pole Position Marketing