misonoNo.33447
MISONO さん 08/02/27 16:23
 
秀丸エディタマクロ関数に openfile というものがあって /h でステルスモードにな
るんですけど、これを秀丸メールでもマクロの作成の都合上、どうしても使いたいと
思っています。
現在のところは、newfileしてinsertで既存のファイルを読み込んで処理をさせてい
るんですがどうしてもテキスト処理の動作が重くなるため、ステルスで既存のファイ
ルを開き何らかの処理をさせたいと思っています。
何か良い知恵はないでしょうか?または関数を追加していただけると嬉しいのですが。

[ ]
RE:33447 misonoNo.33448
秀まるお2 さん 08/02/27 17:22
 
 秀丸メールではウィンドウのステルス表示は出来ないですが、秀丸エディタ
のライセンスをお持ちであれば、秀丸エディタに処理させたらいいと思います。

 秀丸エディタと連携して処理させる例が、マクロヘルプの「マクロ作成のヒ
ント・テキストファイルの処理」にあります。そこの例のようにやってみて欲
しいです。

 hidemaru.exeを起動するパラメータに「/h」も付ければステルスになるはず
だと思います。今試しにやってみたらうまくステルスで動作しました。

 例:

    test.mac--------
       message "test.mac";
       exit;

   test2.mac--------
       runsync2 "c:\\hidemaru\\hidemaru.exe /h /x test.mac";
       message "test2.mac";

 test2.macを秀丸メール上で実行すると、ステルス秀丸から"test.mac"のメ
ッセージ表示して、それにOKすると秀丸メールが"test2.mac"を表示します。

[ ]
RE:33447 マクロの処理を早くする方法No.33449
Iranoan さん 08/02/27 17:24
 
 MISONO さん今日は、Iranoan です。
 念の為お断りしておくと、開発者とは何の関わりも無い単なる一ユーザです。
> 秀丸エディタマクロ関数に openfile というものがあって /h でステルスモードにな
> るんですけど、これを秀丸メールでもマクロの作成の都合上、どうしても使いたいと
> 思っています。
> 現在のところは、newfileしてinsertで既存のファイルを読み込んで処理をさせてい
> るんですがどうしてもテキスト処理の動作が重くなる
 insertfile (ですよね) の前、newfile の直後に showwindow と
disabledraw を使ってみては?

[ ]
RE:33448 misonoNo.33450
MISONO さん 08/02/27 18:38
 


マクロヘルプのマクロ作成のヒントを読みました。
 runsync2とhidemaru /h で対処することができました。
すんなり解決してしまったのでびっくりしました。ありがとうございました!

[ ]
RE:33450 misonoNo.33451
MISONO さん 08/02/28 10:30
 
すいません。もう少し教えてください。

きのう教えていただいた方法でためしているのですがまだちょっと自分の希望にかな
う形になっていません。

手続きとしては以下のようにしたいと思っています。
・マクロ実行途中で
・ステルスで既存のファイルを開く
・マクロで使用していた一部の変数はそのまま有効な形で
・マクロを継続したい
・変数の受け渡しをしたい
・開いたファイルの中で検索する

この手続きでは、
・runsync関数は開いたファイルが閉じるまでマクロが待機してしまうので無理で、
・runについては、runで開いたファイルに対してマクロを継続することができません
(findhidemaruでウィンドウ番号が取得できないため)
※なお秀丸はタブモードです
・また、runやrunsyncを使って、既存ファイルを開き、hidemaru.exeオプションで/x
test.macとした場合、マクロ間で変数のやりとりができま
せん。

ということは、/xでマクロを実行しつつ既存ファイルをステルスで開き、/xで実行す
るマクロで、上記の動作に対応したマクロを書かなければ
ならないという仕様になるでしょうか。
できれば、マクロは1個のなかでやりたく、スマートに納めたいんですけど・・・。

[ ]
RE:33451 misonoNo.33452
秀まるお2 さん 08/02/28 10:54
 
 秀丸エディタと秀丸メールの間でマクロの変数を引き継ぐことは出来ないの
で、例えばレジストリやiniファイルを使って値を引き継ぎをするようにマク
ロを修正しないとダメです。

 手っ取り早くやるとしたら、iniファイルを使うのが一番簡単ですけど。

 秀丸メールのマクロ側で

    writeinistr "c:\\temp.ini", "Section", "Key", $data;

 としておいて、秀丸エディタのマクロ側では

    $data = getinistr( "c:\\temp.ini", "Section", "Key");

 みたいにするとか。

 temp.iniファイルが残って邪魔な場合は、秀丸メールの方でマクロの最後に

   loaddll "tkinfo.dll";
   #n = dllfunc("Bypass_DeleteFile", "c:\\temp.ini");

 みたいにすれば、iniファイルを削除出来ます。

[ ]
RE:33452 misonoNo.33456
MISONO さん 08/02/28 13:02
 
レジストリやiniを使ったデータの受け渡し了解です。
そうなると /x をつかってマクロを別で実行させるしかないってことで、いまのとこ
ろは run で秀丸を立ち上げるようなマクロに修正中です。
(できればもう少しスマートにしたいとは思っているんですけど)

そこでもう少しお願いします。run 関数を使って、秀丸で既存ファイルを開くときに、
コマンドラインで指定したファイル名を履歴に残さない
起動オプションはないでしょうかヘルプにはないみたいなんですけど。
openfile 関数では nohistといったオプションがあったと思うのですが・・・。

マクロの実行中だけしか処理しない既存ファイルでの処理なので履歴に残したくない
のですが。

[ ]
RE:33456 misonoNo.33457
秀まるお2 さん 08/02/28 13:21
 
 openfile関数にnoaddhistってパラメータかあるのは僕は知りませんでした。

 ってことでそれを使えばいいと思います。つまり、ファイル名はiniファイ
ル経由で渡してやって、秀丸エディタ側で起動されたマクロの方で、そのini
ファイルで指定されたファイルをnoaddhist付きでopenfileすればいいと思い
ます。

[ ]
RE:33457 misonoNo.33458
MISONO さん 08/02/28 13:36
 
なるほど。そういう方法がありましたね!
だいぶ複雑なマクロ処理になりそうですけどいろいろと試してみます。
ご教授ありがとうございました。

[ ]
RE:33457 misonoNo.33459
秀まるお2 さん 08/02/28 13:36
 
 秀丸エディタ起動時コマンドラインに「/n」っていうのもありました。それ
を指定すれば履歴に入らないようです。

[ ]
RE:33457 misonoNo.33460
Iranoan さん 08/02/28 13:36
 
 MISONO さん今日は、Iranoan です。
>  openfile関数にnoaddhistってパラメータかあるのは僕は知りませんでした。
 今は run 文を使っているので、n オプションを使えばよいと思いますよ。

[ ]
RE:33456 misonoNo.33462
K'zawa さん 08/02/28 13:40
 
MISONOさん、こんにちは。
K'zawaです。

>コマンドラインで指定したファイル名を履歴に残さない
>起動オプションはないでしょうかヘルプにはないみたいなんですけど。

「/n」は使えませんか?

[ ]
RE:33457 misonoNo.33463
MISONO さん 08/02/28 13:46
 
事故フォローです。秀丸の起動オプションで /n が履歴残さないがありました。

[ ]