「秀丸マクロ」のスコープと「hmLN」のスコープとの値のやり取り概要秀丸マクロでは直接は「マネージdll」を取り扱うことが出来ません、 スコープ間の値のやりとり「秀丸マクロ」のスコープと「hmLN」のスコープとの値のやり取りをみてみましょう。 hmLNの内部スクリプトとして用意されているLuaの配列はindexが「1」から始まる点にも注意してください。 #MNG = loaddll( hidemarudir + "\\" + "hmLN.dll" ); // テーブル{1,2,3}をbbbに代入 #_ = dllfuncw(#MNG, "DoString", "bbb = {1,2,3}\n"); #_ = dllfuncw(#MNG, "SetNumVar", "var1", 100); #num = dllfuncw(#MNG, "GetNumVar", "var1"); message(str(#num)); #_ = dllfuncw(#MNG, "DoString", "bbb[2] = var1\n" ); // テーブルbbbの[2]をresult_numという変数に代入 #_ = dllfuncw(#MNG, "DoString", "result_num = bbb[2]" ); // result_numの値を秀丸マクロ側に得る #result_num = dllfuncw(#MNG, "GetNumVar", "result_num"); // 表示 message(str(#result_num)); // hmLNのスコープにグローバル変数nameとして「武田信玄」という文字列を代入 #_ = dllfuncw(#MNG, "SetStrVar", "name", "武田信玄"); // 今設定した値を秀丸マクロ側に取得 $name = dllfuncstrw(#MNG, "GetStrVar", "name"); message($name); // bbb[1]の値と-200の絶対値を足しこんで、result_numという変数に代入 #_ = dllfuncw(#MNG, "DoString", "result_num = bbb[1] + clr.System.Math.Abs(-200)" ); // それを秀丸マクロ側に得る #result_num = dllfuncw(#MNG, "GetNumVar", "result_num"); // 文字列として表示 message(str(#result_num)); freedll(#MNG); |