[不具合報告]マクロでMeryをWSHのExec()メソッドで呼び出すとフリーズ

  1. はじめまして。

    Meryを使わせていただいてる者です。
    Meryは軽量でレジストリも使わないし、マクロで必要な機能を追加できるので、とても気に入っています。

    ところで、先日、マクロを作っていて不具合(?)を見つけてしまったので、報告いたします。

    [不具合内容]
    マクロで、WScript ShellオブジェクトのExec()メソッドでMeryを起動して、標準出力を得ようとすると、Meryがフリーズします。
    具体的には、以下のマクロを実行します。
    フリーズしているとき、Meryプロセスが2個あります。

    [環境]
    以下の環境で不具合を確認しました(現時点の最新の安定版はver. 1.0.4ですよね?)。

    ・ Windows XP Pro SP2、Mery 1.0.4.1807
    ・ Windows XP Pro SP2、Mery 1.0.7.2021

    [復帰方法]
    新しく出来たMeryプロセスを殺します。

    [問題のマクロ]
    // WScript ShellオブジェクトのExec()メソッドでMeryを起動する。
    // meryExecObjには、WshExecオブジェクトが格納される。
    var meryExecObj = new ActiveXObject( "WScript.Shell" ).Exec( Editor.FullName );
    // meryExecObjのstdOutプロパティにアクセス(ReadAll)すると、Meryがフリーズする。
    var meryStdOut = meryExecObj.stdOut.ReadAll();

    ご確認、よろしくお願いします。

     |  hat  |  返信
  2. はじめまして。ご愛用ありがとうございます!
    気に入って頂いて幸いです、開発がんばります!

    ふむ、不具合報告ですか・・・!うぁ~んw

    > [不具合内容]
    > マクロで、WScript ShellオブジェクトのExec()メソッドでMeryを起動して、標準出力を得ようとすると、Meryがフリーズします。

    ふむふむ・・・。

    > [問題のマクロ]
    > // WScript ShellオブジェクトのExec()メソッドでMeryを起動する。
    > // meryExecObjには、WshExecオブジェクトが格納される。
    > var meryExecObj = new ActiveXObject( "WScript.Shell" ).Exec( Editor.FullName );
    > // meryExecObjのstdOutプロパティにアクセス(ReadAll)すると、Meryがフリーズする。
    > var meryStdOut = meryExecObj.stdOut.ReadAll();

    ほほう。こりゃよく分からないですね・・・。
    stdOut.ReadAll() は標準出力が帰ってくるまで待機しちゃうし、Meryは標準出力がないのでフリーズするのかもしれないです。
    スクリプトが使用できる他のテキストエディタで試してみたけど、それらもフリーズするので、こればっかりは対処できそうにないです。。。すみません。。。

     |  Kuro  |  返信
  3. 1日遅れ?ですが、Meryクリスマス!
    早速の対応、ありがとうございます。

    > スクリプトが使用できる他のテキストエディタで試してみたけど、
    > それらもフリーズするので

    なるほど...
    今回問題となったマクロは、かなり暴力的というか、
    かなり無理があるものだったので、マクロ側のバグだったのかもしれません。
    お手数をおかけしてしまい、申し訳ありません...

    # Meryのinput()とExec()で外部アプリ起動のマクロを作ろうと思っていたのですが...
    # 最新のMeryの「外部アプリ起動」機能で出来そうですね。

     |  hat  |  返信
  4. こんにちは!クリスマス、終わっちゃいましたね・・・。サンタは来ず・・・。

    > なるほど...
    > 今回問題となったマクロは、かなり暴力的というか、
    > かなり無理があるものだったので、マクロ側のバグだったのかもしれません。
    > お手数をおかけしてしまい、申し訳ありません...

    お力になれず、申し訳ないです。。。
    WSHスクリプトのすべての機能が完全に使えるわけではないようなので、
    他にも動作しないものがあるかもしれませんが、現時点では解決策など
    全く解らない状態です。仕様なのか、不具合なのかすら判断できないです。。。

    > # Meryのinput()とExec()で外部アプリ起動のマクロを作ろうと思っていたのですが...
    > # 最新のMeryの「外部アプリ起動」機能で出来そうですね。

    終了待ちはできませんが、お試し頂けると幸いです。

     |  Kuro  |  返信
スポンサーリンク