|
まず先に仕組みを説明させていただきますと・・・・・
AutoRestoreFindPackを呼び出すと、マクロ終了してすぐのタイミングで検索パック文字列が元に戻ってしまいます。そして、Bypass_PostMessageでPostされたコマンドは、マクロが終了した後に実行されます。
マクロが終了して検索パック文字列が自動で戻るタイミングとPostMessageされた命令が実行されるタイミングはどっちが先になるかは保証困難なんですが、テストした限りは検索パック文字列が戻る方が先みたいです。なので今回の「1〜3」の現象が起きるんだと思います。
> ケース1〜3、いずれの場合もチェックが入るようにしたいのですが、可能でしょうか?
> (hilight=1以外の、他のオプションについても、同様になると思われます)
検索パック文字列が自動で戻る前に40066番のコマンド実行をすればいいので、単純にBypass_PostMessageをsendmessageにすればいいと思います。
loaddll "tkinfo.dll";
setcompatiblemode 0x00020000; //2行目
#n = dllfunc("AutoRestoreFindPack"); //3行目 //=秀丸エテ゛ィタでの「setcompatiblemode 0x00020000;」に相当(ヘルプより)
#n = dllfunc("SetFindPack", "(\"\",target=smallheaderbody), hilight=1");
//#n = dllfunc("Bypass_PostMessage", hidemaruhandle(0), 0x111, 40066);
#n = sendmessage( hidemaruhandle(0), 0x111, 40066, 0 );
endmacro;
みたいにしたらうまく「検索文字列を強調」がONでダイアログボックスが出てきつつ、検索が終わった後にもう一度手作業で検索ダイアログを出せば、「検索文字列を強調」はOFFで出てきました。
> (4)
> ...
> 検索して一覧作成ダイアログボックスが出た時に、検索文字列の初期値として、「あああ」を表示させたいのですが、可能でしょうか?
いくつか作戦を試して限りはうまくいきませんでした。そもそもそういうことがマクロで出来る設計になってないので、無理があります。
無理矢理やるとしたら、メール本文に"あああ"を無理矢理書き込んで範囲選択し、「検索して一覧作成」コマンドをPostMessageで実行させるといいようでした。ただ、それだとAutoRestoreFindPackが出来ないとか、メール本文に"あああ"が残ってしまうなどの問題が出ます。
例:
loaddll "tkinfo.dll";
#n = dllfunc("SelectPane", 2); //メール内容枠をアクティブにする
readonlyswitch;
#browsemode = browsemode;
if( #browsemode ) browsemodeswitch;
gofiletop;
insertfix "あああ\n";
beginsel;
golineend2;
if( #browsemode ) browsemodeswitch;
#n = dllfunc("Bypass_PostMessage", hidemaruhandle(0), 0x111, 40066, 0);
秀丸エディタのsearchdialog文/grepdialog文みたいなのを秀丸メールにも用意するとか、何か関数追加でないと無理な気がします。
|
|