| |
まず先に仕組みを説明させていただきますと・・・・・
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行目 //=秀丸エテ゛ィタでの「setcom
patiblemode 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文みたいなのを秀丸メールにも用意する
とか、何か関数追加でないと無理な気がします。
|
|