Menu

#904 DLL読み込みWSHマクロ関数の追加

open
nobody
None
5
2014-11-19
2014-11-17
Moca
No

WSHマクロ・プラグインからDLL関数を実行できるようにするIfObjを追加します。
Editorではなく、NativeCallというオブジェクト名に関数を定義しました。
実装コードは2つあり、
・独自定義(x86では制限なし、x64ではfloat,doubleの引数が使えない)
・libffiを用いた実装、コンパイルにlibffiのlib/headerが必要
となっています。

Libffiのコンパイル方法等についてはパッチのlibffi.txtを参照のこと。

1 Attachments

Discussion

  • Moca

    Moca - 2014-11-19

    LoadLibrary 第二引数 オプション追加
    GetPtrDllValue,GetPtrDllHandle 追加
    GetProcAndDefPtr,FreeProc 追加
    CopyMemory,MoveMemory,SwapMemory,SetMemory,GetMemorySize 追加
    SetByteMemory 戻り値型 VC_BOLに修正
    SetDobuleMemory => SetDoubleMemory
    GetPtrFromIntPtr => GetPtrFromUIntPtr / VC_UIPに変更
    GetPtrFromPtr, SetPtrIndex 追加
    IsInvalidHandlePtr 追加
    GetStringArch, GetSizeOfIntPtr 追加
    FreeLibraryで解放済みLibNoをFreeLibraryした場合例外にするように変更
    独自実装の場合、GetProcAndDefで引数の最大数15個(x86ではdoubleは7個)をチェックして例外にするように変更
    CallでPtrObjの引数が正しく渡せていなかったバグを修正
    Callで引数タイプMemory,PtrObjのとき-1でNULL,-2でINVALID_HANDLE_VALUEを渡すように変更
    CallでString系の戻り値のときNULLだった場合に例外にするように修正
    CallでString系かPtrObjの戻り値で正しい時も例外が発生していたのを修正
    AllocMemoryで確保時に0初期化するように修正
    AllocBinaryMemoryでbinDataにU+100以上があったとき-1を返していたのを例外にするように修正
    Alloc*Memoryでエラー時のmemのdelete忘れを修正
    SetStringMemoryで0文字書き込みのときindexが範囲外のチェックができていなかったのを修正
    Get(String|StringCode)(Memory|Ptr)の引数indexが実装されていなかったのを修正
    GetBinaryPtrのindexマイナスで例外発生していたのを修正
    GetBinary(Memory|Ptr)でlenが0を指定の時メモリーサイズ読み込みになっていたのを0バイト読み込みに修正
    GetBinaryMemoryでlenが-2以下のとき例外にして、-1のときバッファ長にするように修正
    GetBinaryPtrでlenが-1以下のとき例外にするように修正
    GetBinary(Memory|Ptr)の戻り値が、バイト列をそのままメモリコピーになっていたのを修正
    indexがとても大きい時のMemory範囲チェックで整数オーバーフローしていたバグを修正
    CMemoryでUTF-32のNUL終端を扱うように
    GetNativePtrSizeでpMemがNULLのときアクセス違反になるバグを修正
    メモリー確保失敗に対する処理の強化
    AddVectorDataのFreeIndex再設定を修正

     
  • Moca

    Moca - 2014-11-19

    API説明書 v0_1

     
  • Moca

    Moca - 2014-11-19

    テスト用スクリプト・バイナリ・パッチ等一式

     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.