[▲前のスレッド]

[33178] プラグイン開発における質問について2 
2006/10/7 (土) 16:42:55 CH
softbank219019036066.bbtec.net / Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
乗松さん

Plugin開発で行き詰ったところが1点あります。
SDK内のドキュメントを一通り読みましたが
解決できなかったので質問させてください。

お気に入り のようなPluginを作成中です。
Plugin内で、メールをMailIDで管理しています。

CBeckyAPI::BKC_OnDragDrop() にてメールやフォルダが移動されようと
していることがわかりますが、
メールを移動した際、移動先のメールに新規IDが割り振られますので、
Plugin側管理のIDと不整合が発生してしまいます。
(フォルダごと移動の場合は既存IDのままでした)
また、あまりないとは思いますが、他のプラグインによるキャンセルも
認識できない状態です。


メール移動後に新規IDを取得するにはどうすればよいのでしょうか?

Folder.idxを解析する方法は思いつきましたが、
Becky側の処理と同期が取れないのと、このファイルを開いたりするのは
あまりよくないのでやめました。

ID変更時に
BKA_OnMailIDChanged(LPCSTR lpOldID, LPCSTR lpNewID)
のようなコールバックがあれば理想的なのですが…。

よろしくお願いします。

[33200] Re:プラグイン開発における質問について2 
2006/10/10 (火) 00:15:12 乗松知博
pd1px4.st.vc.shawcable.net / Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; Media Center PC 2.8)
こんにちは

確かに、現行のAPIで移動先のメールのIDを取得する
正式な方法は無いですね。

Becky!の処理的には、ターゲットのフォルダにコピー、
移動元を削除、で移動と言うことになっていますので、
厳密には、IDが変わる、というロジックは存在しない
ことになります。

フォルダにメールを追加する際に、そのフォルダ内で一番
大きなID+1が次に追加されるメールのIDになりますので、
OnDragDropのタイミングで、前もって新しいIDを知ることは
不可能ではないと思います。
後ほど、改めてそのIDのメールの存在をチェックすることで
ドロップがキャンセルされたかどうかも確認できるんじゃ
ないかと・・・

すみません。自分で試していないので上手くいくかどうかは
定かではないのですが・・・


▼ CHさん
> メール移動後に新規IDを取得するにはどうすればよいのでしょうか?

[33204] Re2:プラグイン開発における質問について2 
2006/10/10 (火) 02:33:42 CH
softbank219019036066.bbtec.net / Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)

お忙しい中ご回答ありがとうございます。


▼ 乗松知博さん
> Becky!の処理的には、ターゲットのフォルダにコピー、
> 移動元を削除、で移動と言うことになっていますので、
> 厳密には、IDが変わる、というロジックは存在しない
> ことになります。


新規の別メールになってしまっているのですね。
了解しました。


> フォルダにメールを追加する際に、そのフォルダ内で一番
> 大きなID+1が次に追加されるメールのIDになりますので、
> OnDragDropのタイミングで、前もって新しいIDを知ることは
> 不可能ではないと思います。


Folder.iniの [Status] LastMsg の値でよいのでしょうか?

やはり非同期にIDチェックまで行うのは大変そうです。
もし、移動をキャンセルするプラグインがあれば動作は未保障、
という制限であれば、移動時に上記IDを決め打ちできそうです。

ちなみにメール移動時に新規IDをPluginへ通知するような
APIをSDKへ追加される予定はございますか?
当方個人でのんびり開発しており、追加の予定があれば
それまで待とうかなと思いましたので。

[33215] Re3:プラグイン開発における質問について2 
2006/10/11 (水) 01:14:45 乗松知博
pd1px4.st.vc.shawcable.net / Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; Media Center PC 2.8)
こんにちは

▼ CHさん
> Folder.iniの [Status] LastMsg の値でよいのでしょうか?

残念ながら、これではありません。
恐らくスマートに取得する方法はないと思います。

・Folder.idxの最後の行から取得する
・GetNextMailでフォルダ内を全スキャンして、一番大きい値を保存しておく

あたりでしょうか。

> ちなみにメール移動時に新規IDをPluginへ通知するような
> APIをSDKへ追加される予定はございますか?
> 当方個人でのんびり開発しており、追加の予定があれば
> それまで待とうかなと思いましたので。


今のところなんともいえませんが、検討課題とさせていただきます。

[33239] Re4:プラグイン開発における質問について2 
2006/10/14 (土) 18:57:53 CH
softbank219019036066.bbtec.net / Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
ご回答ありがとうございます。

▼ 乗松知博さん
> こんにちは
>
> ▼ CHさん
> > Folder.iniの [Status] LastMsg の値でよいのでしょうか?
>
> 残念ながら、これではありません。
> 恐らくスマートに取得する方法はないと思います。
>
> ・Folder.idxの最後の行から取得する
> ・GetNextMailでフォルダ内を全スキャンして、一番大きい値を保存しておく


メールがないフォルダへの移動の場合、
上記の方法ではできませんでした。

ところで、B2.NUMというファイルに次回のID番号が
10進数で保存されていますが、
この値は使用してよいのでしょうか?

何度もすいません、よろしくお願いします。

[33247] Re5:プラグイン開発における質問について2 
2006/10/16 (月) 23:09:17 乗松知博
pd1px4.st.vc.shawcable.net / Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; Media Center PC 2.8)
こんにちは

▼ CHさん
> ところで、B2.NUMというファイルに次回のID番号が
> 10進数で保存されていますが、
> この値は使用してよいのでしょうか?


はい、多分使えるはずです。
ただし、メールの追加先がIMAPフォルダの場合は、
例外的にこの値は使いません。前回申し上げたような
形で、フォルダにメールがない時は0が割り振られます。

よろしくお願いいたします。

[33261] Re6:プラグイン開発における質問について2 
2006/10/17 (火) 22:43:34 CH
softbank219019036066.bbtec.net / Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
▼ 乗松知博さん
> はい、多分使えるはずです。
> ただし、メールの追加先がIMAPフォルダの場合は、
> 例外的にこの値は使いません。前回申し上げたような
> 形で、フォルダにメールがない時は0が割り振られます。


これで何とか実現できそうです。
ありがとうございました。

[33270] Re7:プラグイン開発における質問について2 
2006/10/18 (水) 22:02:59 しののん
59-171-33-50.rev.home.ne.jp / Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
BkNewsプラグイン等の作者です。

老婆心ながら、「送信日付で整理」などを行うと、メール ID
が1から採番し直されてしまいます。というわけで、メール移
動等を考慮するんでしたら、メール IDだけでなく Message-Id
なども使ってメールを管理し、もしメール ID で見つからな
かったら1回は Message-Id を元にメールを探す、という処理
が必要になると思います。

私も今、高速メール全文検索プラグインを自分用に作って
使っていますが、メールIDでのみ管理しているので一般公開
できるものにはなっていません。

というわけで、私も CH さんが最初におっしゃっていた
> ID変更時に
> BKA_OnMailIDChanged(LPCSTR lpOldID, LPCSTR lpNewID)
> のようなコールバックがあれば理想的なのですが…。

という案に、基本的に賛成です。

[▼次のスレッド]
INCM/CMT
Cyclamen v3.84