none
C#のIEコンポーネントに表示させる方法 RRS feed

  • 質問

  • お世話になります。ziroと申します。

    C#のIEコンポーネントにHTMLを表示させるために次のように
    記述してファイルから読み込んでいますが、この方法だと
    必ず一旦ファイルに落とさなくては読み込むことができません。

    ファイルに落とさずに、HTML文字列をIEコンポーネントに
    読み込む方法はないでしょうか。


    StreamWriter sr = new StreamWriter(idd_FileName, false,System.Text.Encoding.GetEncoding("Shift-JIS") );
    sr.Write(kind);
    sr.Close();

    object o      = null ;
    axWebBrowser1.Navigate(idd_FileName, ref o, ref o, ref o, ref o) ;

    2006年3月30日 11:17

すべての返信

  • 失礼しました。共通 フォーラム に同趣旨の質問があったのですね。

    >Document に対して Write します。
    DocumentにWriteメソッドが見当たらず、またDocumentは読み取り専用
    ということでこの部分でなかなか上手く行かないのですが、よろしければ
    お教えいただけないでしょうか。

    2006年3月30日 12:30
  • 返信ありがとうございます。

    >DocumentTextプロパティなんてどうでしょう。

    こんなプロパティが、.NET Framework version 2.0であるのですね。

    ただ、当方の開発環境が、.NET Framework version 1.1ベースな

    ものでこれは使えないのです。

     

    2006年3月30日 12:59
  • AxInterop.SHDocVw.dll ですかね。その場合 DOM を使おうとするなら、Microsoft.mshtml.dll が必要です。これは通常、参照の追加で COM の Microsoft HTML Object Library(mshtml.TLB) を追加することによってプロジェクトに加えられます。

    参照に追加したら、AxWebBrowser の Document プロパティを mshtml.IHTMLDocument2 にキャストしてやってください。write プロパティが使えるはずです。

    ただし、COM オブジェクトの扱いには こういう問題がある 点について気を付けてください。

    2006年3月30日 13:07
  • 大変ありがとうございました。次のとおり記述して上手く行きました。((mshtml.IHTMLDocument2)axWebBrowser1.Document).write("123456");

    2006年3月30日 13:27
  • COM を扱う時は、オブジェクトの解放を常に意識しなくてはならず
    解放できていないと、メモリ内にずっと残ったままになるとの
    ことですが、この場合

     Marshal.ReleaseComObject(axWebBrowser1);

    のようにして使うのでしょうか。これだとaxWebBrowser1自体を
    開放してしまうような気がするのですが。

    お手数をおかけしますがよろしくお願いします。

    2006年3月30日 22:08
  • COMは参照カウントという方式を採用しています。

    参照カウントを足した場合には、足した人(関数)が引く必要があります。

    その引く処理がMarshal.ReleaseComObjectです。

    詳細はMSDNライブラリなどを読んでみてください。

    2006年3月31日 1:26