// 元ウィンドウで DLL をロード
loaddll hidemarudir + "\\DengakuDLL.dll";
// グローバル変数の定義
if (dllfunc("SETVAR","arg0","this is arg 0.") == 0 ||
dllfunc("SETVAR","arg1","this is arg 1.") == 0 ||
dllfunc("SETVAR","arg2","this is arg 2.") == 0) {
message "変数の定義に失敗!!";
...
}
// 別ウィンドウのオープン
openfile "foo.txt";
// 別ウィンドウで新たに DLL をロード
loaddll hidemarudir + "\\DengakuDLL.dll";
// 定義しておいたグローバル変数を読み込む
##a = 0;
while (##a < 3) {
$arg[##a] = dllfuncstr("GETVAR","arg" + str(##a));
if (dllfunc("DELVAR","arg" + str(##a))) break;
##a = ##a + 1;
}
...
// 永続的なグローバル変数の定義(マクロ終了後も保存される)
if (dllfunc("SETVAR","@super_global","this is super-global var.") == 0) {
message "永続的変数の定義に失敗!!";
}
// 別ウィンドウでロードした DLL のアンロード
// (この時点では全てのグローバル変数がメモリ上に残った状態になる)
freedll;
closehidemaruforced hidemaruhandle(0);
// 元ウィンドウでロードした DLL のアンロード
// (この時点で @super_global の値(のみ)が保存される)
freedll;
...
|