2004-06-17 [長年日記]

[Q3] ドラフト (2)

昨日考えた通りに実装してみたところいまいちうまくいかないところがあったので以下のようにしてみました。

  • 送信時にはX-QMAIL-DraftMacroとX-QMAIL-Macroを順番に評価し、両方とも取り除く
  • ドラフト時にはX-QMAIL-DraftMacroを評価して取り除き、X-QMAIL-Macroは残す
  • edit.templateではドラフトフラグがたっている時だけX-QMAIL-Macroを削除せずに引き継ぐ
  • reply.templateやforward.templateでは、X-QMAIL-Macroを使って元のメッセージにフラグを立てる
  • edit.templateでは、X-QMAIL-DraftMacroを使って元のメッセージを削除する

これで大体うまくいっているように見えます。ドラフト時だけ評価されるマクロがなくなってしまいましたが、シチュエーション的にあまりなさそうなので良いかなということで。

[Q3] Gecko

Sleipnirが少しだけGeckoが使えるようになったり、LunascapeがGecko対応を表明したり、Gecko対応が最近の流れのようです。

試しに、QMAIL3でMozilla ActiveX Controlを使えるかどうか試してみました。といっても単に生成しているオブジェクトのProgIdを"Shell.Explorer"から"Mozilla.Browser"に変えてみただけです。

いきなりレスポンスが返ってこなかったので調べてみたところ、IWebBrowser::get_BusyがずっとVARIANT_TRUEを返してくるようので、ここをスキップしてみました。これで一応インスタンス化には成功したもののメールの表示はできません。どうもIOleClientSiteに設定したIServiceProviderを要求してこない様子です。なので、IInternetProtocol経由でコンテンツを渡している部分がまったく動作していません。これでは仕方がないのでこの部分はあきらめ、RSSで直接外部のURLを表示している部分を試してみました。こっちは一応外部サイトをQMAIL3の中で表示することができました。ただ、IHTMLDocument2::get_readyStateがE_NOTIMPLを返してきたりとまだまだ実装が追いついていないようです。IInternetSecurityManager周りも入っていないようですし、Gecko対応するなら直にGeckoのAPIを使ってホスティングする必要があるかもしれません*1

*1  やらないですけど

[]