Sleep中の不安定化についてNo.00403
飛梅 さん 04/01/19 12:19
 
 秀丸(3.15)側から秀ターム(4.36)のホストを起動し、クリップボードを自動送信す
るマクロとスクリプトを自作・愛用しています(下記)。通常は自動終了スクリプト
のsleep中に手動終了のスクリプトを実行して使用し、送り忘れたら自動的に送信す
るという仕組みです。

 秀丸マクロ

beginsel;
searchdown "\/";
right 1;
copy;
run "C:/HideTerm/HideTerm.exe \"xxxxx\"";
endmacro;

 秀タームスクリプト(自動終了)
timeout 0
sleep 2
send"1^M"
wait "送信ジャンルを指定して下さい。"
send "xx^M"
wait "送信準備完了です。"
sendclipbrd
send "^M"
wait "送信しますか?"
sleep 20
send "Y^M"
wait "送信完了"
send "@E/^M"

 秀タームスクリプト(手動終了)
send "Y^M"
wait "送信完了"
send"@E/^M"

afterhangup close.hsc

 そこでご相談ですが、

1)Win98環境ではかなり円滑に作動していたのですが、コンピューターをWinXPモデ
ルに買い換えたところ、sleep のところで秀タームのカーソルの点滅が不定期になり、
秀丸が動かなくなって送信の合間に別の仕事ができなくなったり、手動終了のスクリ
プトが一度で入らなくなるなどの不具合が発生しています。スクリプトの文法を参照
し、sleepの間にmillisleepを挿入することなどを試しましたが、うまくいきません。
いい解決方法があったら教えて頂けると大変助かります。

2)既に秀タームが起動している状態で秀丸マクロを実行すると、「xxx.stkは現在
他のアプリケーションが参照しているので書き込みできません」とのエラーが出ます。
もちろん、秀タームを終了してからマクロを実行すれば問題ないのですが、秀丸側で
最初に秀タームを終了してから再起動させたり、秀タームの設定を変更して書き込み
できるようにしたりできないものでしょうか。あるいはエラーで既に起動している分
と合わせて2つ起きている秀タームを簡単に終了できるよう、秀丸のexitallに相当
するスクリプトがあれば教えてください。

 以上です。お手数をおかけしますが、よろしくお願いします。

[ ]
RE:00403 Sleep中の不安定化についてNo.00404
秀まるお2 さん 04/01/19 12:54
 
■1番目の件

 WindowsXPだからといって、特に不安定になるというのは、僕にはよく分かり
ません。

 とりあえず、

 − 秀丸からrun文で秀Termを起動した場合に限ってダメなのかどうか?
 − 秀丸が関係ないとして、ならば、スクリプトが動作してる場合に限って
   ダメなのか、それともスクリプトが動いて無くてもカーソル点滅が不定期
   になるなどの症状が起きるかどうか?

 って辺りを調べていただければ、それで何か解決のヒントが見つかるかもしれ
ないです。

 例えば、秀丸のrun文を使うとダメってことなら、例えばですけど、runsync文
を使って起動してみるとか、あるいは、

    run "cmd.exe /c c:\\hideterm\\hideterm.exe";

 みたいにcmd.exeを経由させて起動したらどうかとか、試す手があります。

■2番目の件

 秀丸側から秀Termを強制終了させて、それから改めて秀Termを起動する作戦が
いいと思います。

 秀丸から秀Termを終了させるには、

    #h = findwindowclass("HideTermFrameClass");
    if( #h != 0 ) {
        #n = sendmessage( #h, 0x0010, 0, 0 );
    }

 のようなマクロでいけます。

[ ]
RE:00404 試してみます。ありがとうございNo.00405
飛梅 さん 04/01/19 16:27
 
 秀まるお2様、ありがとうございます。
早速試してみます。

[ ]
RE:00405 解決しました。ありがとうございNo.00406
飛梅 さん 04/01/20 13:23
 
 いろいろ試した末、秀タームを4.44に更新したら不具合は
出なくなりました。ひょっとするとWin98用の秀タームをXP
マシンに入れていたのかも知れません。お騒がせしました。
 秀タームを終了するマクロは導入したことさえ忘れそうな
くらい快適です。ありがとうございました。

[ ]