English help on website



サンプル(Ver9.15対応版)
目次DLL側から秀丸エディタの関数呼び出し− サンプル(DLL側からマクロに情報を伝える)

V9.15以降では、setstaticvariable/getstaticvariableの共有フラグに-1を指定することで、サイズの制約や他のマクロとの競合無く、DLLとマクロ間で情報を伝えることが可能です。
DLL側からは、Hidemaru_SetStaticVariableを使い、第3パラメータに-1を指定し、情報を格納します。
マクロ側では、getstaticvariableを使い、第2パラメータに-1を指定し、格納された情報を取得します。

従来より、関数の戻り値でも数値や文字列を返すこともできました。
また、Hidemaru_EvalMacroでDLL内から実行も可能でした。
Hidemaru_SetStaticVariableの場合は、より簡便に渡すことが可能です。

例:マクロ側
loaddll @"C:\Folder\Test.dll";
#a = dllfunc("DllFuncTest",hidemaruhandle(0));
message getstaticvariable("hoge",-1);
endmacro;

例:DLL側
#include <windows.h>

extern "C" __declspec( dllexport )
INT_PTR _cdecl DllFuncTest( INT_PTR nHwnd ) {
    HINSTANCE hinstExe = GetModuleHandle( NULL );
    BOOL (WINAPI* pfnHidemaru_SetStaticVariable)( const WCHAR*, const WCHAR*, int );
    (FARPROC&)pfnHidemaru_SetStaticVariable = GetProcAddress( hinstExe, "Hidemaru_SetStaticVariable" );
    
    if( pfnHidemaru_SetStaticVariable ) {
        BOOL f = pfnHidemaru_SetStaticVariable( L"hoge",L"DLLでセット(-1で一時的に)",-1);
    }
    return 0;
}

参照:
Hidemaru_SetStaticVariable
getstaticvariable