Archive for 4月 30th, 2012

  1. Hello, Win32 API(Lua) World!

    Posted on 4月 30th, 2012 by cx20

    Win32 API(Lua)

    Win32 API は、Windows の機能にアクセスする為の API(Application Programming Interface)である。
    以下は Lua にて alien ライブラリを用いた呼出し例である。

    ソースコード

    require "alien"
     
    MessageBox = alien.User32.MessageBoxA
    MessageBox:types{ ret = 'long', abi = 'stdcall', 'long', 'string', 'string', 'long' }
    MessageBox( 0, "Hello, Win32 API(Lua) World!", "Hello, World!", 0 )

    Win32 データ型に対応する Lua の型(alien ライブラリ)としては以下のようなものがある。

    Win32 データ型 C/C++ データ型 Lua
    VOID void void
    INT int int
    UINT unsigned int uint
    DOUBLE double double
    CHAR char char
    LPCSTR const char * string
    LPVOID void * pointer
    PINT int * ref int
    PUINT unsigned int * ref uint
    DOUBLE * double * ref double
    PCHAR char * ref char
    PROC function pointer callback
    SHORT short short
    WORD unsigned short ushort
    BYTE signed char byte
    LONG long long
    DWORD unsigned long ulong
    FLOAT float float

    実行方法

    C:¥> lua hello.lua

    実行結果

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