2005年6月15日水曜日

[3] Crena Html2jpg : サイトのサムネイル画像の自動取得

今回作成した、サイトキャプチャーツール Crena Html2jpgで フレーム使用のサイトをキャプチャーしたとき、全フレーム読み込まずに、1フレーム、よくて2フレームしか表示しないことが判明
=>これじゃー コマンドラインから使用した、url2bmpと同じです。
読み込み完了を,DocumentCompleteで判断していたのですが、フレームを利用したサイトだとフレーム数分このイベントが発生します。
フレーム数分の最後で、終了判断しないといけないようです。
=>参考URL http://support.microsoft.com/kb/180366/EN-US/ の適用で、うまく動作しました。(ツールの公開はもう少し先です。)
※最近購入した自宅のXP HOME EdtionのIE6.0 SP2 環境だと、なぜか、フレームサイトがキャプチャーされない。
 アプリケーションの問題かとあれこれ悩んでいのですが、なんと通常のIEブラウザーで、 フレーム使用のサイトをみたら真っ白で表示されません!インターネットオプション-ツール-詳細設定でOKとして、再表示したら、フレームサイトも正しく表示されます。
但し一旦 IEを終了させて再度起動するとやはり、真っ白です。どなたかこの現象わかるかたおられるでしょうか?


--メモ--
コマンドラインからperlスクリプトで呼び出し実行したもの。
crenahtml3.jpg
ON_EVENT(CHtmlView, ID_CRENA_1, DISPID_DOCUMENTCOMPLETE, DocumentComplete, VTS_DISPATCH VTS_PVARIANT)
ON_EVENT(CHtmlView, ID_CRENA_1, DISPID_NAVIGATECOMPLETE2, OnNavigateComplete2, VTS_DISPATCH VTS_PVARIANT)
LPDISPATCH glpDisp = NULL;
void CCreateCrenaHTMLImage::DocumentComplete(LPDISPATCH pDisp, VARIANT* URL)
{
UNUSED_ALWAYS(pDisp);
UNUSED_ALWAYS(URL);
//フレーム使用サイトで最後のフレームで処理する。
if (glpDisp && glpDisp == pDisp){
// if the LPDISPATCH are same, that means
// it is the final DocumentComplete. Reset glpDisp
EndModalLoop(0);
glpDisp = NULL;
}
}
void CCreateCrenaHTMLImage::OnNavigateComplete2(LPDISPATCH pDisp, VARIANT* URL)
{
// Check if glpDisp is NULL. If NULL, that means it is
// the top level NavigateComplete2. Save the LPDISPATCH
if (!glpDisp){
glpDisp = pDisp;
}
}

1 件のコメント: