起動オプション /x で既存のウインドウ上No.39877
すず さん 22/07/15 06:40
 
起動オプション /x で秀丸エディタのマクロ実行についてです。
現状の秀丸エディタの起動コマンドは、とにかく何かファイルを開くのが基本のよう
ですが、「アクティブな秀丸上でマクロを実行」という動作は可能でしょうか。
/m3x オプションで、たまたま一番上だったファイルを指定して、/x でマクロを実行
したときのような動作と言えば伝わりますでしょうか。
すでに秀丸エディタが実行中の場合、ファイルを開くのではなくて、単に秀丸エディ
タをアクティブにして、既存の一番上の秀丸上でマクロを実行させたいんですが、
キーボードツールなど外部のプログラムからの操作で、今アクティブな秀丸上で任意
のマクロを実行できたらと思います。

[ ]
RE:39877 起動オプション /x で既存のウイNo.39878
秀丸担当 さん 22/07/15 09:06
 
外部からマクロを実行する方法としては、一応マクロヘルプの「マクロ実行するメッ
セージ」のところにあるWM_REMOTE_EXECMACRO_FILEのメッセージでやる方法がありま
す。
文字列のポインタを指すので、アドレスは同じプロセス上にあるアドレス空間にない
といけないです。
例えば他のプロセスから呼んだりすると、アドレス空間が違うので、まずいことにな
ったりします。
/xのように気軽に使えず、他のプロセスだとしたらVirtualAllocExとか必要になった
り、いわゆるネイティブコードを書くようなことになってきてしまうと思います。

[ ]
RE:39877 起動オプション /x で既存のウイNo.39879
K'zawa さん 22/07/15 13:54
 
すずさん、こんにちは。
K'zawaです。

マクロ冒頭に、

setactivehidemaru 1;
closehidemaru 1;

と追加してはいかがでしょうか?

[ ]
RE:39879 起動オプション /x で既存のウイNo.39880
すず さん 22/07/16 06:20
 
K'zawaさん

助言をありがとうございます。
そのままではうまくいきませんでしたが、参考にしていろいろ工夫してみます。

[ ]
RE:39878 起動オプション /x で既存のウイNo.39881
すず さん 22/07/16 06:22
 
ご返答ありがとうございます。
そうですか。わかりました。
優先度底でいいので、要望リストに加えてもらえたら嬉しいです。
キー登録もマクロ登録もしていないマクロを、マクロ名、マクロ引数を指定して外か
ら簡単に操作できると便利だと思います。

[ ]
RE:39880 起動オプション /x で既存のウイNo.39884
秀丸担当 さん 22/07/19 09:01
 
K'zawaさんの言われているような方式であれば、/hオプションと共に使うことで、で
きると思います。
例えば、paste;で貼り付けるマクロだとして、以下のような感じにしてできました。

#h=hidemaruhandle(0);
setactivehidemaru 1;
closehidemaruforced #h;
paste;

起動オプションは/h /x test.macのように起動して、前面の秀丸エディタをアクティ
ブにして、/hの秀丸エディタは終了します。
一瞬見えない秀丸エディタがアクティブになったりするので、非タブモードではちら
つきが目立ったりするかもしれません。

[ ]
RE:39884 起動オプション /x で既存のウイNo.39924
すず さん 22/07/29 05:49
 

ありがとうございます。
まずはその方法でやることにします。

たとえばの話なんですが。
秀丸ファンの僕としては、秀丸エディタと秀丸ファイラーの両方のマクロ・スクリプ
トについて、編集は秀丸エディタで、ファイルの管理は秀丸ファイラーでやる、とな
るわけです。
そうすると、エディタ上・ファイラー上で直接双方のマクロ・スクリプトを実行した
くなります。
ファイラーのスクリプト実行については、ファイラーのファイル一覧画面からも、そ
れを編集しているエディタからも、可能になりました。
(フォーカスを外されるという問題を修正していただき、ありがとうございます)
エディタのマクロ実行については、エディタ自身からは当然問題なしですが、ファイ
ラーからやろうと思うと直面するのが今回の問題でした。
「ファイラーで選んでいるファイルの情報を使って、編集中のエディタに何らかの処
理をさせる」みたいな連携もあると思います。
こういったことは素直にできたほうがよいと思うのですが、どうでしょうか。

[ ]
RE:39924 起動オプション /x で既存のウイNo.39927
秀丸担当 さん 22/07/29 11:09
 
当初は外部から実行というのが、何かキーボードフックをするようなもので、アクテ
ィブな秀丸エディタ上から自身に指示ようなものかと思っていました。
例えば秀丸リーダーはそういうことに相当して、やり方はマクロ登録78番から80番に
登録してもらうというちょっと特殊なやり方になっています。
それだと設定に依存するので、WM_REMOTE_EXECMACRO_FILEという方法もあるというこ
とでした。

普通の秀丸エディタ上で実行するマクロで作業用に/hで作ったりする手法もあるので
すが、非タブモードではアクティブが頻繁にちらついたりして、あまりきれいな手法
ではないものでした。
キーボードフック等で自分自身目的に/hするのも、ちらつくことになります。

ですが別アプリである秀丸ファイラーClassicがアクティブなときに実行するという
ことで、やはりK'zawaさんご提案のsetactivehidemaru 1;や/hを使う方法が一番素直
というか、理にかなっていると思います。
ちらちき問題もなく、前面に限らずfindhidemaruで探したりなどもできるし、/h /x
の使い方が最も効果を発揮する場面という気がします。

[ ]