秀丸マクロから呼び出すhmPSの関数(API)は多くありません。
ほとんどの場合は、「DoString」だけを使うこととなるでしょう。
PowerShellファイルを別ファイルにした場合には、「DoFile」を使うことになるハズです。
文字列「szexpression」をPowerShellの命令として実行します。
何らかの明確な内部エラーがあった場合は0が、とりあえず実行できた場合は1が返ってきます。
#PS = loaddll( hidemarudir + @"\hmPS.dll" ); #_ = dllfuncw( #PS, "DoString", R"PS( $aaa = "あいうお"; function mysum($a, $b) { return $a + $b; } )PS" ); #bbb = 123; #_ = dllfuncw( #PS, "DoString", R"PS( $bbb = $hm::Macro::Var['#bbb']; $ccc = $aaa + "続いている"; # 別のDoStringでも、aaa は引き続き利用できる。 $hm::Macro::Var['$ddd'] = $ccc; $result = mysum 1 2 $hm::debuginfo( $result ); # 別のDoStringで定義した関数も当然利用できる。 )PS" ); message($ddd); freedll( #PS );
ファイル名「filename」内の記述内容全体をDoString(...)の引数に渡したものとして実行します。
何らかの明確な内部エラーがあった場合は0が、とりあえず実行できた場合は1が返ってきます。
繰り返しになりますが、DoFileとは、「該当のファイルの中身をそのままDoStringに渡す」ということですので、
複数個のファイルを利用することが可能です。
この際は、変数名の衝突などに注意してください。
「.ps」ファイルは、「utf8(BOM無)」「utf8(BOM有)」「utf16(BOM有)」のいずれかが想定されています。
それ以外で取り扱いたい場合、「SetCodePage」関数を利用してください。
この関数は「読み込み対象のファイル」が、該当のコードで記述してある、 という指定となります。
例えば、以下のようにすることで、
基本的にまともに取り扱うことが出来る文字コードには、必ず「コードページ」が割り振られているため、あらゆるものに対応できます。
#PS = loaddll( hidemarudir + @"\hmPS.dll" ); // 読み込み対象のファイルである「.psファイル」は指定のコードページで書かれてます(932=cp932≒ShiftJIS)ですよ、という指定 #_ = dllfuncw(#PS, "SetCodePage", 932 ); #_ = dllfuncw(#PS, "DoFile", currentmacrodirectory + @"\test.ps" ); freedll(#PS);