ディオゲネス・クラブ
別のKMmacroを実行するには ─── - KIC
2024/04/14 (Sun) 17:24:00
3月に質問いたした KIC です。その節はご回答いただき、ありがとうございました。
そのご回答中に「別の KMmacro を起動して、3秒たったら KEY コマンドを実行する」という記述があったことを覚えていて、先日マクロを手直ししている際にここで使用できるとよいなぁと思い、組んでみました。
結果は、しかし、「すでに常駐しています」というメッセージが表示され、別の KMmacro を実行させることはできませんでした。
そこでお尋ねいたします。
当方は KMmacro を常駐させて毎日利用していますが、メッセージの内容からすると、この使い方は主となる KMmacro が非常駐で起動している場合のみ有効な使い方なのでしょうか。
ついでながら、KMmacro.txt ファイルの内容を読んでいて気になった箇所について質問させてください。
1.
open コマンドについて説明した L.929 に「ファイルをオープンします。input、write を行うためには、まず open 処理を行う必要があります」とあり、L.932 に 「input コマンドを使うことができる」 とあるところから、この「input、write」が KMmacro のコマンドだということはわかったのですが、「input コマンド」というものが見当たりません。「input コマンド」は現在実装されていないという理解でよろしいでしょうか。
2.
L.679 に「GOTO で IF ~ END の中に飛び込む」とありますが、「END」は「ENDIF」の書き間違いかと存じましたが、それでよろしいでしょうか。
以上です。
お時間がおありの際にご回答いただけましたらたいへん幸いに存じます。よろしくお願いいたします。
Re: 別のKMmacroを実行するには ─── - たわしと
2024/04/15 (Mon) 19:28:38
KIC さん、こんばんは。
| この使い方は主となる KMmacro が非常駐で起動している場合のみ有効な使い方なのでしょうか。
KMmacro は起動時に、既に常駐していないかをチェックして、二重の常駐をしないようにしている……のですが、調べてみたところ、常駐起動でない場合でも、このチェックを行っていました。そのため、常駐している KMmacro からでは、別の KMmacro は(非常駐起動でも)起動できません。ご指摘の通りです。
というわけで、現状ではこの動作なのですが、このチェック、非常駐起動の時はたぶんいらないよなあ……。
| 「input コマンド」というものが見当たりません。
あ、申し訳ありません。
「(1) Input … 入力用にオープンする。これでオープンしたファイルには、input コマンドを使うことができる。」
は、
「(1) Input … 入力用にオープンする。これでオープンしたファイルには、read コマンドを使うことができる。」
の誤記です。
つまり、「read コマンドでファイルを読み込む」には、その前に「input 指定の open コマンドで、ファイルをオープンしておかなければならない」、の意味でした。
この誤記が今まで見逃されてきたのは、キーボードマクロでファイル入出力なんてやる人があまりいなかったのか、そうでなければ、この辺の書き方が昔の BASIC という言語そのままなので、知っている人は読まなくてもわかるから、でしょうかね。
|「GOTO で IF ~ END の中に飛び込む」とありますが、「END」は「ENDIF」の書き間違いかと存じましたが、それでよろしいでしょうか。
これもご指摘の通りで、正しくは「ENDIF」です。
マニュアルにいくつも誤りがありまして、申し訳ありません。ご指摘、ありがとうございました。
Re: 別のKMmacroを実行するには ─── - KIC
2024/04/19 (Fri) 15:48:48
早速のご返信、ありがとうございます。
>> 常駐している KMmacro からでは、別の KMmacro は(非常駐起動でも)起動できません
L.1198 に「常駐→非常駐は KMmacro 自身のホットキーで自動的に切り替えられる」とありますが、これは実質的に
〈常駐モードで起動した KMmacro から別の KMmacro を非常駐モードで起動することはできない〉
ということだと理解しておりましたが、
「二重の常駐をしないようにしている」とのことで、結局
〈常駐モードで起動している KMmacro からは別の KMmacro を起動させることはできない〉
というわけですね。
よくわかりました。ありがとうございます。
>> このチェック、非常駐起動の時はたぶんいらないよなあ……
もし非常駐起動時に常駐チェックしなかったら、
主となるマクロが非常駐モードの KMmacro で実行されているなかで別の KMmacro をすでに従として起動している際に、
さらに別の KMmacro を起動しようとした場合に常駐チェックがされなくならないのかが心配になりました。
しかし、〈非常駐モードがあればチェックしない〉ではなく、〈常駐モードがあればチェックする〉という仕様にすればよいだけですから、杞憂ですね。
最後に、「input コマンド」の件ですが、「read コマンド」と読み替えればよいだけだったのですね。
すっきりしました。
KMmacro はとても重宝しており、マクロを自ら書けるようにまでなれたのは KMmacro.txt のおかげなので、
当方のような KMmacro 初心者にとってこのファイルがいまより少しでもよいものになればと願い、お尋ねした次第です。
今回も本当にありがとうございました。