Archive for 4月 29th, 2012

  1. Hello, Win32 API(Python) World!

    Posted on 4月 29th, 2012 by cx20

    Win32 API(Python)

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

    ソースコード

    import ctypes
     
    user32 = ctypes.windll.user32
    user32.MessageBoxA( 0, "Hello, Win32 API(Python) World!", "Hello, World!", 0 )

    実行方法

    C:¥> python hello.py

    実行結果

    ---------------------------
    Hello, World!
    ---------------------------
    Hello, Win32 API(Python) World!
    ---------------------------
    OK   
    ---------------------------
  2. Hello, Win32 API(PHP) World!

    Posted on 4月 29th, 2012 by cx20

    Win32 API(PHP)

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

    なお、PHP 5.4.5 / 5.3.15 より、COM サポートは既定では組み込まれていない為、使用するには、以下の設定を追加する必要がある。

    PHP 設定

    [COM_DOT_NET]
    extension = php_com_dotnet.dll

    ソースコード

    <?php
    $win32 = new COM("DynamicWrapper");
    $win32->Register( "user32.dll", "MessageBoxA", "i=hhsu", "f=s", "r=l" );
    $win32->MessageBoxA( 0, "Hello, Win32 API(PHP) World!", "Hello, World!", 0 );
    ?>

    なお、上記の “i=hhsu” は各引数の型を、”f=s” は呼び出し規約を、”r=l” は戻り値の型を表している。以下は主要なタイプ一覧である。詳細は「An Automation Object for Dynamic DLL Calls | Dr Dobb’s」を参照のこと。

    タイプ 説明
    a オートメーションオブジェクト(IDispatch*)
    c 符号なし文字型(unsigned char)
    d 倍精度浮動小数点数(double)
    f 単精度浮動小数点数(float)
    k COM オブジェクト(IUnknown*)
    h ハンドル(handle)
    l 整数型(long)
    p ポインタ(pointer)
    s 文字列(string)
    t 整数型(short)
    u 符号なし整数型(unsigned int)
    w ワイド文字列(wide string)

    実行方法

    C:¥> php -f hello.php

    実行結果

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