Archive for 5月 5th, 2012

  1. Hello, Win32 API(Delphi) World!

    Posted on 5月 5th, 2012 by cx20

    Win32 API(Delphi)

    Win32 API は、Windows の機能にアクセスする為の API(Application Programming Interface)である。
    以下は Delphi からの呼出し例である。
    Win32 API の参照方法としては、external 宣言を用いる方法の他、Winapi.Windows ライブラリを用いる方法などがある。

    ソースコード(external 宣言)

    program hello;
     
    function MessageBox(hWnd: THandle; lpText: PAnsiChar; lpCaption: PAnsiChar; uType: Cardinal): Integer;
        stdcall; external 'user32.dll' name 'MessageBoxA';
     
    begin
        MessageBox( 0, 'Hello, Win32 API(Delphi) World!', 'Hello, World!', 0 );
    end.

    ソースコード(Winapi.Windows ライブラリ)

    program hello;
     
    uses
        Windows;
     
    begin
        MessageBox( 0, 'Hello, Win32 API(Delphi) World!', 'Hello, World!', MB_OK );
    end.

    Win32 データ型と Delphi データ型の対応は主に以下のようになっている。

    Win32 データ型 C/C++ データ型 Delphi データ型
    HANDLE void * THandle
    BYTE unsigned char Byte
    SHORT short Smallint
    WORD unsigned short Word
    INT int Integer
    UINT unsigned int Cardinal
    LONG long Integer
    BOOL int LongBool
    DWORD unsigned long LongWord
    ULONG unsigned long LongWord
    CHAR char AnsiChar
    WCHAR wchar_t WideChar, Char
    LPSTR char * PAnsiChar
    LPCSTR const char * PAnsiChar
    LPWSTR wchar_t * PWideChar, PChar
    LPCWSTR const wchar_t * PWideChar, PChar
    FLOAT float Single
    DOUBLE double Double
    LONGLONG __int64 Int64
    DWORD64 unsigned __int64 UInt64

    コンパイル方法(Delphi XE2)

    C:¥> dcc32 hello.pas

    実行結果

    ---------------------------
    Hello, World!
    ---------------------------
    Hello, Win32 API(Delphi) World!
    ---------------------------
    OK   
    ---------------------------