IEと同じHTMLソース表示を実装するには?

解決


みけにゃん  2005-01-21 20:39:00  No: 12807  IP: [192.*.*.*]

かなり昔にお世話になったみけにゃんです。
Acty(acty.sakura.vg)のタブブラウザサンプルをお手本にして
タブブラウザを作ってるのですが、IEの[表示(V)]-[ソース(C)]の機能を
実装しようとして分からなくて困っています。

Googleとかで検索しても全然これについては見つからないので
かなり悩んでいます。もし分かる人がいましたら教えてください。

編集    削除
ふじっこ  2005-01-21 21:36:18  No: 12808  IP: [192.*.*.*]

参考になるか、自信ありませんが・・
ブラウザで表示すべき内容は、一時フォルダおよびファイルに保存しておけば
中身を表示するフォームを作って呼び出すだけでは、だめなんですかね?

編集    削除
にしの  2005-01-21 23:23:28  No: 12809  IP: [192.*.*.*]

こんな感じでどうでしょう。
WebBrowserがどのコンポーネントか解りませんが、Document(IHTMLDocument2インターフェース)プロパティを、IOleCOmmandTargetインターフェースにキャストして、Execを使えばできると思います。

IOleCommandTargetは、ActiveXユニットに定義されています。
CGID_WebBrowser, HTMLID_VIEWSOURCEは、IEConstユニットに定義されていると思います。

UIWebBrowserで動作確認済です。
# WinXPproSP2+Delphi7pro+IE6.0SP2

var
  ComTarget: IOleCommandTarget;
  pIn, pOut: OleVariant;
begin
  ComTarget := WebBrowser.Document As IOleCommandTarget;
  pIn := NULL;
  pOut := NULL;
  ComTarget.Exec(@CGID_WebBrowser, HTMLID_VIEWSOURCE, 0, pIn, pOut);
end;

編集    削除
みけにゃん  2005-01-22 01:02:50  No: 12810  IP: [192.*.*.*]

環境はWindows2000SP4で以前のメーラの質問のときのように
Delphi6 PersonalにUIWebbrowserを入れてます。
→最初はTWebbrowserだったけれどキー入力部分でこちらにしました。

ちなみにメーラの開発環境はVC++環境にしちゃいました。≡>_<≡

編集    削除
みけにゃん  2005-01-22 01:24:20  No: 12811  IP: [192.*.*.*]

一応解決したのですが・・・。
Nullが未定義とかいわれてしまいました。T_T

編集    削除
にしの  2005-01-22 04:10:06  No: 12812  IP: [192.*.*.*]

NULLはDelphi7からですかね。
Delphi7ではVariantsに定義されているのですが。
要は、pIn, pOutをVariantのNULL(タイプ=varNull)にしてやればよろしいかと思います。
未使用っぽいので、代入せずに呼べばよいのかも。

編集    削除
HOta  2005-01-22 05:58:38  No: 12813  IP: [192.*.*.*]

VariantはVariantsに定義されているようですから、
usesにVariantsを追加すればどうでしょう。

編集    削除