runex関数で指定したパラメータの読み書きNo.10728
ohtorii さん 25/07/01 10:48
 
お疲れ様です

runex関数にて、呼び出し元で指定されるパラメータの変数の読み書きを行いたいです
現在は、遠回りな手順や外部のDLLを利用しなんとかやりたいことを実現しています
が、もっと簡単な記述で出来たらいいのに。。。
と思いまして、投稿させていただきました

(コードの例)
$MyStdIn = "Foo bar";
$MYStdOutAndStdErr = "";
runex "MyCommands"
        省略
        , 6,$MyStdIn, //stdin  0:none, 省略, 【6:refcall】
        , 9, $MYStdOutAndStdErr  //stdout 0:none, 省略, 【9:refcall】
        , 9, $MYStdOutAndStdErr //stderr 0:none,省略 2-9:same as stdout's param
        省略
    ;

callref関数の内部実装を利用して、無理なく作れるのでは?と思っています
ご検討いただけますと幸いです、よろしくお願いいたします。

[ ]
RE:10728 runex関数で指定したパラメータNo.10729
秀丸担当 さん 25/07/01 12:47
 
runexでは変数への直接はできませんが、標準入出力関係はJavaScript対応でけっこ
う力を入れている部分なので、ぜひともJavaScriptを使ってほしいです。
同期でも非同期でもなかり高度なことが簡単にできるようになっています。
hidemaru.runProcessなどに説明があります。

従来のマクロのとのやり取りを変数でする場合は、getVarとsetVarを使う方法があり
ます。
例:

$MyStdIn = "Foo\nbar\n";
$MyStdOut = "";
js{
  var processInfo = hidemaru.runProcess("cmd /c sort", ".", "stdio", "sjis" );
  var stdIn = processInfo.stdIn;
  stdIn.write( getVar("$MyStdIn") );
  stdIn.close();

  var stdOut = processInfo.stdOut;
  setVar("$MyStdOut", stdOut.readAll(10*1000));
}
message $MyStdOut;
endmacro;

[ ]
RE:10729 runex関数で指定したパラメータNo.10730
ohtorii さん 25/07/01 19:29
 
サンプルありがとうございます、
JavaScriptを試してみます!

[ ]