ヘッダがすべて表示になってしまうNo.40453
styth さん 11/05/09 19:48
 
    loaddll "TKinfo.dll";
    //1.
    $Subject = dllfuncstr("CurrentHeader", "Subject");
    $MessageID0 = dllfuncstr("CurrentHeader", "Message-ID:");
    //2.
    $Subject =  midstr($Subject, strrstr($Subject, ":")+1);//末尾から検索し
てRe:以降を取得
    $Subject = dllfuncstr("YenEncode", $Subject);
    #n = dllfunc("SetFindPack", "(\""+$Subject+"\",target=subject), hilight=
0");//検索文字列を強調ON=1
    if ( ! dllfunc("FindUp") ) message "Subjectが見つかりません。";
    //3.
    $MessageID = dllfuncstr("CurrentHeader", "Message-ID:");

    //4.前半
    $MessageID0 = dllfuncstr("YenEncode", $MessageID0);
    #n = dllfunc("SetFindPack", "(\""+$MessageID0+"\", target=header), messa
geidtarget=messageid");
    #n = dllfunc("FindDown");
endmacro;

 上記マクロを実行すると、なぜか、ヘッダがすべて表示されます。
 FindUpで、ヒットするメールはあります。
 FindUpの直後に(//3の直前)にendmacro;を入れた場合は、ヘッダ表示は変わ
りません。
 確認して頂けないでしょうか?
 よろしくお願いします。

[ ]
RE:40453 ヘッダがすべて表示になってしまNo.40454
styth さん 11/05/09 20:27
 
 ふと、思ったんですが、

>    #n = dllfunc("SetFindPack", "(\""+$MessageID0+"\", target=header), mess
>ageidtarget=messageid");
 target=headerだから、ということなんでしょうか?
 あるいは、
 messageidtarget=messageidだから、ということなんでしょうか?
 そういう仕様ですか?
 よろしくお願いします。

[ ]
RE:40454 ヘッダがすべて表示になってしまNo.40460
秀まるお2 さん 11/05/10 10:18
 
 これは特にマクロだからどうこうというの話ではなくて、「すべてのヘッダ」
を対象に検索を実行すると、ヘッダの表示は「すべて」の表示に勝手に切り替わ
ってしまいます。簡略ヘッダ対象の検索をすると、逆にヘッダ表示が簡略表示に
切り替わったりというのもあります。

 検索コマンドでその辺の動作が確認出来るので、それで確認してみて欲しい所
です。

[ ]
RE:40460 ヘッダがすべて表示になってしまNo.40463
styth さん 11/05/10 18:45
 
> これは特にマクロだからどうこうというの話ではなくて、「すべてのヘッダ」
>を対象に検索を実行すると、ヘッダの表示は「すべて」の表示に勝手に切り替わ
>ってしまいます。簡略ヘッダ対象の検索をすると、逆にヘッダ表示が簡略表示に
>切り替わったりというのもあります。
> 検索コマンドでその辺の動作が確認出来るので、それで確認してみて欲しい所
>です。
 投稿したマクロが、target=headerになっていたから、ヘッダがすべて表示さ
れた、というのは確認できました。
 でも、
 #n = dllfunc("SetFindPack", "(\""+$MessageID0+"\", target=header), message
idtarget=messageid");//ア
 で、マクロを思った通りに動いているんですが、
 ヘルプには、「target=personとしてさらにmessageidtarget=を指定すると、
Message-Id検索という意味になります。」
 とのことなので、
 #n = dllfunc("SetFindPack", "(\""+$MessageID0+"\", target=person), message
idtarget=messageid");
 として、
 #n = dllfunc("FindDown");
 を実行しても、もとのメールにヒットしません。(FindUpでヒットしたメール
にいる状態です。)
 //アの使い方は、間違っているんでしょうか?

[ ]
RE:40463 ヘッダがすべて表示になってしまNo.40465
Iranoan さん 11/05/10 19:03
 
 styth さん今日は、一ユーザの Iranoan です。
>  #n = dllfunc("SetFindPack", "(\""+$MessageID0+"\", target=person), message
> idtarget=messageid");
>  として、
>  #n = dllfunc("FindDown");
>  を実行しても、もとのメールにヒットしません。(FindUpでヒットしたメール
> にいる状態です。)
 おそらく、$MessageID0 の中身が違っているのでは?
 $MessageID0 の中身が解らないので断定は出来ませんが、文字列の始端・終
端に <> が付いたままではないでしょうか?

 それとは別に、word オプションも付けた方が確実です。

[ ]
RE:40465 ヘッダがすべて表示になってしまNo.40466
styth さん 11/05/10 20:19
 
> おそらく、$MessageID0 の中身が違っているのでは?
> $MessageID0 の中身が解らないので断定は出来ませんが、文字列の始端・終
>端に <> が付いたままではないでしょうか?
 マクロで、messageで確認したところ、<>が付いていました。
 検索結果もヒットしていませんでした。

 上記マクロで、//アの使い方については、秀まるお2様からも、コメントを頂
きたいのですが、よろしくお願いします。

 $MessageID0 = dllfuncstr("CurrentHeader", "Message-ID:");
 で、<>が除去して取り出すパラメータをマクロ(関数?)に追加して頂くとい
うことはできないでしょうか?

[ ]
RE:40466 ヘッダがすべて表示になってしまNo.40469
Iranoan さん 11/05/10 20:58
 
 styth さん今日は、一ユーザの Iranoan です。
>  上記マクロで、//アの使い方については、秀まるお2様からも、コメントを頂
> きたいのですが、よろしくお願いします。
 これは秀まるおさんに聞くまでないでしょうね。
>  検索コマンドでその辺の動作が確認出来るので、それで確認してみて欲しい所
> です。
と同じ理由で、メニューから行う「Message-ID 検索」と同じ動きなので。

>  $MessageID0 = dllfuncstr("CurrentHeader", "Message-ID:");
>  で、<>が除去して取り出すパラメータをマクロ(関数?)に追加して頂くとい
> うことはできないでしょうか?
 関数が余り増えてしまうと、却って解り難くなる気がします。
 文字列を部分的に取り出すマクロ・コマンドが用意されているので、末尾の
様に使えば良いと思います。
//------------------------------------------------------------
$MessageID0 = dllfuncstr("CurrentHeader", "Message-ID:");
$MessageID0 = midstr( $MessageID0, 1, strlen( $MessageID0 ) - 2 );

[ ]
RE:40463 ヘッダがすべて表示になってしまNo.40474
秀まるお2 さん 11/05/10 22:44
 
>  #n = dllfunc("SetFindPack", "(\""+$MessageID0+"\", target=header), message
> idtarget=messageid");//ア

 この場合はmessageidtarget=の指定は無視されて、単純に「target=header」
相当で検索されたことになります。

>  ヘルプには、「target=personとしてさらにmessageidtarget=を指定すると、
> Message-Id検索という意味になります。」
>  とのことなので、

 message-id検索を実行するならこっちでないとダメです。

 こっちで検索した方が何十倍か高速に動作するはずです。

 遅くてもいいのならtarget=headerで検索して差し支えないと思います。

 この辺の検索条件式については、「検索して一覧作成...」の所で実際に目的
の検索をやってみて、その後もう一度「検索して一覧作成...」を実行して、そ
このウィンドウの左上のシステムメニューを開いて、そこの履歴を見るといいと
思います。

 message-id検索相当のことも、「検索して一覧作成」の所から指示出来ますの
で。

[ ]
RE:40466 ヘッダがすべて表示になってしまNo.40475
秀まるお2 さん 11/05/10 22:47
 
 message-id:ヘッダの中からmessage-idそのものだけを取り出す処理は、秀丸
メールの内部的には存在しますが、tkinfo.dllの関数として用意してはいないで
す。

 ほとんどのケースではIranoanさんの書かれたようなmidstr関数を使う方法で
大丈夫だと思います。ごくまれにmessage-idが<>で囲まれてなかったり途中に改
行が混じってたりといったことはありますけども、それは迷惑メールの類のケー
スでして、ノーマルな正当なメールではmidstr関数で前後の<>を取るだけで大丈
夫だと思います。

[ ]
RE:40475 ヘッダがすべて表示になってしまNo.40478
styth さん 11/05/10 22:52
 
> ほとんどのケースではIranoanさんの書かれたようなmidstr関数を使う方法で
>大丈夫だと思います。ごくまれにmessage-idが<>で囲まれてなかったり途中に改
>行が混じってたりといったことはありますけども、それは迷惑メールの類のケー
>スでして、ノーマルな正当なメールではmidstr関数で前後の<>を取るだけで大丈
>夫だと思います。
 わかりました。midstrで対応致します。

[ ]
RE:40474 ヘッダがすべて表示になってしまNo.40479
styth さん 11/05/10 22:59
 
>>  #n = dllfunc("SetFindPack", "(\""+$MessageID0+"\", target=header), message
>> idtarget=messageid");//ア
> この場合はmessageidtarget=の指定は無視されて、単純に「target=header」
>相当で検索されたことになります。
 わかりました。

>>  ヘルプには、「target=personとしてさらにmessageidtarget=を指定すると、
>> Message-Id検索という意味になります。」
>>  とのことなので、
> message-id検索を実行するならこっちでないとダメです。
 ということですね。

> この辺の検索条件式については、「検索して一覧作成...」の所で実際に目的
>の検索をやってみて、その後もう一度「検索して一覧作成...」を実行して、そ
>このウィンドウの左上のシステムメニューを開いて、そこの履歴を見るといいと
>思います。
 やってみました。「ウィンドウの左上のシステムメニュー」というのは、左上
の▼ボタンのことですよね。
 こんな使い方ができるんですね。ありがとうございます。

[ ]