[要望]マクロから検索して一覧作成画面のNo.00231
w.stone さん 07/04/29 20:11
 
こんにちは。
w@stone@自宅仕事場 です。

秀丸メール 4.76beta13を使っています。

現在、検索系のマクロを作成しています。

マクロで「検索して一覧作成」をするには、
SetFindPackで検索パラメータを設定して、
DoGrepで実行するわけですが、細かいパラメータに関しては、
マクロ中で設定するのではなく、本体の「検索して一覧作成」を
実行した時の画面を表示して、そこで設定したいのです。

マクロでSetFindPackで設定した値を「検索して一覧作成」の
画面に表示する方法があれば、教えてください。

もしなければ、新たに関数の追加をご検討いただけると
助かります。

以上

(^^) 2007/04/29(Sun) 8:11:19 pm
    鈴木頼雄(w@stone)
……+……1……+……2……+……3……+……4……+……5……+……6

[ ]
RE:00231 [要望]マクロから検索して一覧作No.00233
秀まるお さん 07/05/01 13:59
 
 マクロでSetFindPackして、その後「検索して一覧作成」のコマンドを実行し
たらいいかと思います。マクロからその「検索して一覧作成」を呼び出すために
は、

    #n = dllfunc("Bypass_PostMessage", hidemaruhandle(0), 0x111, 40066);

 とやればいいです。

 SetFincPackしてから上記の文を実行すればいいんじゃないかと思います。

[ ]
RE:00233 [要望]マクロから検索して一覧作No.00235
w.stone さん 07/05/03 10:08
 
こんにちは。
w@stone@自宅仕事場 です。

ご報告が遅れて申し訳ありません。

    秀まるお  さん
    Tue, 01 May 2007 13:59:53 +0900 Wrote:
|    #n = dllfunc("Bypass_PostMessage", hidemaruhandle(0), 0x111,
|40066);
|
| とやればいいです。
|
| SetFincPackしてから上記の文を実行すればいいんじゃないかと思いま
|す。
SetFindPackを実行してから上記のBypass_PostMessageを実行したのですが、
「検索して一覧作成」の画面は出るものの、SetFindPackで設定した
値が画面に反映されていません。

具体的には、SetFildPackで何を設定しても「 」(全角のスペース1文字)に
なってしまいます。

何かおかしいところはあるでしょうか?


(^^) 2007/05/03(Thu) 10:08:25 am
    鈴木頼雄(w@stone)
……+……1……+……2……+……3……+……4……+……5……+……6

[ ]
RE:00235 [要望]マクロから検索して一覧作No.00236
アルビレオ さん 07/05/03 10:55
 
ユーザーのアルビレオです。

>|    #n = dllfunc("Bypass_PostMessage", hidemaruhandle(0), 0x111,
>|40066);
>|
>| とやればいいです。
>|
>| SetFincPackしてから上記の文を実行すればいいんじゃないかと思いま
>|す。
>SetFindPackを実行してから上記のBypass_PostMessageを実行したのですが、
>「検索して一覧作成」の画面は出るものの、SetFindPackで設定した
>値が画面に反映されていません。
>
>具体的には、SetFildPackで何を設定しても「 」(全角のスペース1文字)に
>なってしまいます。
>
>何かおかしいところはあるでしょうか?

どこがおかしいのかこの状況説明ではわかりようがないと思うので、
1つでいいので実際に試してみたマクロをここに書いてみてはいかがでしょうか。
秀まるおさんが連休中ですぐには答えられなくても、詳しい人が教えてくれるか
もしれません。

[ ]
RE:00236 [要望]マクロから検索して一覧作No.00237
w.stone さん 07/05/03 11:16
 
こんにちは。
w@stone@自宅仕事場 です。

    アルビレオ  さん
    Thu, 03 May 2007 10:55:56 +0900 Wrote:
|どこがおかしいのかこの状況説明ではわかりようがないと思うので、
|1つでいいので実際に試してみたマクロをここに書いてみてはいかがでし
|ょうか。
例えば、以下のマクロを保存して、本体で実行すると、
「検索して一覧作成」の検索文字列には、「テスト」が
設定されていて欲しいのですが、そうはならず、
現在選択されているメールのsubjectが検索文字列に
設定されています。

loaddll "tkinfo.dll";
#n = dllfunc("SetFindPack", "(\"テスト\",target=body)" );
#n = dllfunc("Bypass_PostMessage", hidemaruhandle(0), 0x0111, 40066);


(^^) 2007/05/03(Thu) 11:16:00 am
    鈴木頼雄(w@stone)
……+……1……+……2……+……3……+……4……+……5……+……6

[ ]
RE:00237 [要望]マクロから検索して一覧作No.00238
アルビレオ さん 07/05/03 12:13
 
アルビレオです。

>例えば、以下のマクロを保存して、本体で実行すると、
>「検索して一覧作成」の検索文字列には、「テスト」が
>設定されていて欲しいのですが、そうはならず、
>現在選択されているメールのsubjectが検索文字列に
>設定されています。
>
>loaddll "tkinfo.dll";
>#n = dllfunc("SetFindPack", "(\"テスト\",target=body)" );
>#n = dllfunc("Bypass_PostMessage", hidemaruhandle(0), 0x0111, 40066);

こちらでも再現しました。
これって検索ダイアログが持っている「カーソル位置の文字列を検索語として取
り込む」機能のせいで、SetFindPackの文字列が上書きされていみたいですね。
カーソルをどこか文章のある場所に移動させてからマクロを実行するとわかると
思います。
また、検索文字列以外の項目はちゃんと設定できているようです。

もともとの目的が
>細かいパラメータに関しては、
>マクロ中で設定するのではなく、本体の「検索して一覧作成」を
>実行した時の画面を表示して、そこで設定したいのです。
ということなので「ダイアログを出す場合は検索文字列をSetFindPackで設定で
きない」ということで割り切ってしまっても、実用上はあまり問題なさそうな気
がするのですが、どうでしょうか。

[ ]
RE:00238 [要望]マクロから検索して一覧作No.00239
w.stone さん 07/05/03 12:30
 
こんにちは。
w@stone@自宅仕事場 です。

実験してくださり、感謝します。

    アルビレオ  さん
    Thu, 03 May 2007 12:13:58 +0900 Wrote:
|カーソルをどこか文章のある場所に移動させてからマクロを実行するとわ
|かると
|思います。
|また、検索文字列以外の項目はちゃんと設定できているようです。
確かにそうなっていますね。

|
|もともとの目的が
|>細かいパラメータに関しては、
|>マクロ中で設定するのではなく、本体の「検索して一覧作成」を
|>実行した時の画面を表示して、そこで設定したいのです。
|ということなので「ダイアログを出す場合は検索文字列をSetFindPackで
|設定で
|きない」ということで割り切ってしまっても、実用上はあまり問題なさそ
|うな気
|がするのですが、どうでしょうか。
確かにおっしゃる通りかも知れませんが
マクロでも設定したいなあ、と言う思いも少なからずあります。

いずれにしても製造している方のご意見も伺いたいと思います。

以上

(^^) 2007/05/03(Thu) 12:30:28 am
    鈴木頼雄(w@stone)
……+……1……+……2……+……3……+……4……+……5……+……6

[ ]
RE:00239 [要望]マクロから検索して一覧作No.00240
アルビレオ さん 07/05/03 12:49
 
アルビレオです。

>確かにおっしゃる通りかも知れませんが
>マクロでも設定したいなあ、と言う思いも少なからずあります。

参考までに、ひと手間増えてしまいますが PushFindPack を使うと検索履歴に保
存され、検索ダイアログの左上の▼(キーボードなら Alt+Space)でそれを呼び出
すことができます。
特にキーボードだとダイアログが出てから Alt+Space → 1 と順に押すだけで呼
び出せるので、慣れてしまえばかなりお手軽だと思います。

loaddll "tkinfo.dll";
#n = dllfunc("SetFindPack", "(\"テスト\",target=body)" );
#n = dllfunc("PushFindPack");//←これを追加するだけ!
#n = dllfunc("Bypass_PostMessage", hidemaruhandle(0), 0x0111, 40066);

[ ]
RE:00240 [要望]マクロから検索して一覧作No.00241
秀まるお さん 07/05/03 22:14
 
 ちょっと無理矢理なやり方で良ければ以下のようなマクロもありかと…

loaddll "tkinfo.dll";
#n = dllfunc("SetFindPack", "(\"テスト\",target=body)" );
if( browsemode ) browsemodeswitch;
if( readonly ) readonlyswitch;
gofileend;
insertfix "テスト";
beginsel;
gofileend;
#n = dllfunc("SelectPane", 2);
#n = dllfunc("Bypass_PostMessage", hidemaruhandle(0), 0x0111, 40066);

[ ]
RE:00241 [要望]マクロから検索して一覧作No.00242
w.stone さん 07/05/04 10:25
 
こんにちは。
w@stone@自宅仕事場 です。

    秀まるお  さん
    Thu, 03 May 2007 22:14:01 +0900 Wrote:
| ちょっと無理矢理なやり方で良ければ以下のようなマクロもありかと…
作者さんからこの方法が提示されたと言うことは、
検索ダイアログを表示したときに
「カーソル位置の文字列を検索語として取り込む」機能が
動作するのは、現状では仕様と言うこと。つまり、

#n = dllfunc("SetFindPack", "(\"テスト\",target=body)" );
#n = dllfunc("Bypass_PostMessage", hidemaruhandle(0), 0x0111, 40066);

だけでは、検索して一覧作成を表示したときに、SetFindPackで
設定した文字列を表示することは出来ないと言うことですね。

作者さんが教えたくれた方法がちょっと面白いと思うので、
色々考えてみます。

ありがとうございました。

(^^) 2007/05/04(Fri) 10:24:53 am
    鈴木頼雄(w@stone)
……+……1……+……2……+……3……+……4……+……5……+……6

[ ]