============================================================

                 DMonkey Script Host ver0.3.0改

------------------------------------------------------------

DMonkey0.3.0を独自に拡張したものです。
DynaCall関連を拡張してます。


□仕様

・拡張子
    なんでも可。ただしインポートできるのは*.dmsのみなので、
    *.dmsを推奨。

・インポート
    dmscript.exe または、スクリプトと同じところにある*.dmsフ
    ァイルのみインポートできます。

・標準出力
    print(write),println(writeln)メソッドでの出力は、実行終
    了(中断)後、ソースファイル名.log というファイル名でスク
    リプトと同じ場所に保存されます。

  ※同名のファイルが存在する場合は問答無用で上書きされるので
    注意してください。


□DMonkey0.3.0からの変更点

  ・/*...**/だとコメントが終了しないのを修正。
  ・DynaCallで登録した関数の's'パラメータにnullを指定したと
    きはNULL(0)を渡すようにした。
  ・DynaCallオブジェクトにsendMessage()メソッドを追加。
  ・DynaCallオブジェクトにpostMessage()メソッドを追加。
  ・Structオブジェクトを追加。
  ・StringBufferオブジェクトの作成時引数を拡張。
  ・Structオブジェクトの型に'i','w'を追加。
  ・Numberオブジェクトの比較がおかしかったのを修正。
  ・NaNの扱いを少し変更。
  ・Global.msgBox()の引数を拡張。
  ・その他。


□変更点の詳細

  ○DynaCall.register()の'i=s'パラメータ

    's'で指定されたパラメータにnullを渡すとNULL(0)を渡すよう
    にしました。これにより、

    d = new DynaCall;
    d.register('user32','FindWindow','i=ss','r=h');

    という登録の場合、

    h = d.FindWindow('Notepad',null);

    でタイトルを無視してクラス名'Notepad'のウィンドウのハン
    ドルが取得できます。


  ○DynaCall.sendMessage(hWnd,Msg,wParam,lParam)
    DynaCall.postMessage(hWnd,Msg,wParam,lParam)

    register()メソッドで登録してもいいのですが、wParam,lPara
    mがMsgによって'l'だったり、's'だったりするので追加しまし
    た。
    wParam,lParamが文字列または文字列オブジェクトだったとき
    は自動的にポインタを渡すようになってます('s'指定と同じ)。
    それ以外のときは数値を渡します('l'指定と同じ)。


  ○StringBufferオブジェクトの作成時引数

    new StringBuffer(文字列) ... 
      文字列で初期化します。(0.3.0と同じ)

    new StringBuffer(数値[,値]) ... 
      数値のバッファサイズを確保し、値(0-255)で埋めます。
      (省略時は 0 で埋められます)

    (例)
      s = new StringBuffer(5,'a');
      alert(s); //aaaaa


  ○Global.msgBox(text[,flag[,caption]])

    第3引数の文字列がキャプションになります。


  ○Structオブジェクト
    構造体オブジェクト。DynaCallで構造体を使う場合に使用しま
    す。

    new Struct('メンバ名:型'[,'メンバ名:型',...])

      メンバ名とその型を : (コロン)で区切った文字列で指定し
      ます。引数の順番がそのまま構造体の並びになるので、あら
      かじめ各構造体の構造を知っておく必要があります。
      DynaCallの関数に渡す場合、Structオブジェクトを渡す引数
      には's'を指定していなければなりません。

      メンバ名
        自由につけて構いません。メンバ名はそのままStructオブ
        ジェクトのメンバ名(プロパティ)となります。

      型 ()はバイト数
        c: char(1)
        t: short(2)
        l: long(4)
        i: int64(8)
        p: pointer(4)
        h: HWND(4)
        u: unsigned int(4)
        b: bool(4)
        s: 文字列またはStructオブジェクト(4)
        w: ワイド文字列(4)
        f: float(4)
        d: double(8)
        数値: 文字配列char[](数値)

    メソッド
    ・sizeOf() ... 整数値。構造体のサイズ。

    プロパティ
    ・length ... 整数値。メンバ数。読み出し専用。

    (例)
      d = new DynaCall;
      //構造体を渡すパラメータには's'を指定↓します
      d.register('user32','GetCursorPos','i=s','r=b');
      //POINT構造体を作成
      point = new Struct('X:l','Y:l');
      //呼び出し
      d.GetCursorPos(point);
      alert(['マウスカーソルの位置は',
             'X = ' + point.X,
             'Y = ' + point.Y,
             'です'].join("\n"));

------------------------------------------------------------
2003/03/31 shobohn.

Project DMonkey:
http://sourceforge.jp/projects/dmonkey/
