C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

.NET2.0でのMicrosoft.mshtml.dllの動作について


(過去ログ 3 を表示中)

[トピック内 16 記事 (1 - 16 表示)]  << 0 >>

■3418 / inTopicNo.1)  .NET2.0でのMicrosoft.mshtml.dllの動作について
  
□投稿者/ あちゃ 二等兵(1回)-(2006/05/04(Thu) 10:02:26)

分類:[C#] 


分類:[C#] 

はじめまして、あちゃと申します。

.NET Framework 2.0の環境で、以下の現象が発生しており原因がわからず困っています。 原因、対処方法についてご存知の方おられましたら、情報をお願いします。

VS2003 + C# の環境で Microsoft.mshtml.dll を使用したプログラムを作成していました。開発したプログラムとMicrosoft.mshtml.dllを配布することにより、VS2003が入っていないマシンでも、動作することを確認していました。

.NET 2.0 対応のため、開発環境をVS2005にし、今までと同様に作成したプログラムとMicrosoft.mshtml.dllを、VS2005が入っていないマシンに配布したところ、例外が発生し動かなくなってしまいました。もちろん配布先のマシンには .NET2.0はインストール済みです。

Microsoft.mshtml.dll の使用条件があるのかと思い検索してみましたが、これといった情報を見つけられず、途方にくれています。

些細なことでもいいですので、何か知っている方いましたらよろしくお願いします。

0
引用返信 編集キー/
■3431 / inTopicNo.2)  Re[1]: .NET2.0でのMicrosoft.mshtml.dllの動作について
□投稿者/ YAS 一等兵(38回)-(2006/05/06(Sat) 10:50:29)
YAS さんの Web サイト

分類:[C#] 

Microsoft.mshtml.dllというのはVS2003の自動生成ラッパーですか?(大きさが8メガバイトくらいあるやつ)

VS2005ではmshtmlはカスタムラッパーが用意されているのでVS2003で作成したようなラッパーは不要なはずです。試しにそのMicrosoft.mshtml.dllというものを削除してみてください。

また,Microsoft.mshtml.dllがmshtmlのdll「そのもの」を表しているのなら,mshtmlはたしかIEといっしょにインストールされるものだったと思うので,IEをインストールしなおしてみてください。

0
引用返信 編集キー/
■3432 / inTopicNo.3)  Re[2]: .NET2.0でのMicrosoft.mshtml.dllの動作について
□投稿者/ あちゃ 二等兵(3回)-(2006/05/06(Sat) 11:25:33)

分類:[C#] 


YASさん、情報ありがとうございます。

[困ったチャンについて話すスレ]を読み、自分のことを言われているようで、再度投稿しなおそうかと思っているところでした。

早速、試してみます。
結果はまた報告いたします。


0
引用返信 編集キー/
■3435 / inTopicNo.4)  Re[3]: .NET2.0でのMicrosoft.mshtml.dllの動作について
□投稿者/ あちゃ 二等兵(4回)-(2006/05/06(Sat) 11:54:13)

分類:[C#] 

すいません、以下のように試してみたのですが、うまくいきませんでした。
(Microsoft.mshtml.dllは8M近くあるので、VS2003の自動生成ラッパーだと思います)

1.開発環境が入っていないPCで、Microsoft.mshtml.dll を削除してアプリ実行
→ Microsoft.mshtml.dllが見つからない旨の例外発生。
→ 削除前は「System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。」という例外が発生していました。

2.アプリプロジェクトの参照設定から、Microsoft.mshtml.dll を削除
→ ビルドエラー「名前空間 'mshtml'が見つかりません・・・」
→ Microsoft.mshtml.dll に代わる参照設定が必要なのでしょうか?

以下ソースコードです。

using mshtml;

private void CreateHtmlDocument()
{
HTMLDocumentClass parentDocument = new HTMLDocumentClass();
IHTMLDocument2 doc2 = parentDocument;
IHTMLDocument4 doc4 = parentDocument;
doc2.write("<html></html>");
doc2.close();

HTMLDocumentClass htmlDocument =
doc4.createDocumentFromUrl("XXX.html", null) as HTMLDocumentClass;

int i = 0;
while (htmlDocument.readyState != "complete")
{
if (++i > 50)
{
// タイムアウト処理
}
System.Threading.Thread.Sleep(70);
System.Windows.Forms.Application.DoEvents();
}
}

上記コードで、.NET Framework 1.1のときはアプリと同じフォルダに Microsoft.mshtml.dll をおくことにより動作していました。
私の勉強不足かと思いますが、今一度アドバイスお願いいたします。

長くなってしまいましたが、よろしくお願いいたします。

0
引用返信 編集キー/
■3439 / inTopicNo.5)  Re[4]: .NET2.0でのMicrosoft.mshtml.dllの動作について
□投稿者/ YAS 伍長(40回)-(2006/05/06(Sat) 15:29:10)
YAS さんの Web サイト

分類:[C#] 

2006/05/06(Sat) 15:32:07 編集(投稿者)

ごめんなさい。
ただdllを削除したらだめですね。
一度mshtmlの参照設定を削除し,もう一度mshtmlの参照設定をしてみてください。
参照設定するのはCOMの「Microsoft HMTL Object Library」です。

※VS2003では「あれフリーズしたかな?」というくらい参照設定の時に待たされますが,VS2005では一瞬で処理が終わるはずです。

0
引用返信 編集キー/
■3440 / inTopicNo.6)  Re[5]: .NET2.0でのMicrosoft.mshtml.dllの動作について
□投稿者/ YAS 伍長(41回)-(2006/05/06(Sat) 15:41:12)
YAS さんの Web サイト

分類:[C#] 

ところで例題のコードは何をするコードなのか今ひとつわからないのですが,
VS2005にあるWindowsFormのHtmlDocumentでは実現できないのでしょうか?
COMは開放が面倒なので.NETでできることは.NETでやった方がいいのでは?

0
引用返信 編集キー/
■3441 / inTopicNo.7)  Re[6]: .NET2.0でのMicrosoft.mshtml.dllの動作について
□投稿者/ あちゃ 二等兵(5回)-(2006/05/06(Sat) 16:32:26)

分類:[C#] 

お世話になります。

参照先を変更し試してみましたが、以下の例外が表示されました。
まだ、'Microsoft.mshtml.dll' を見に行っているようです。

************** 例外テキスト **************
System.IO.FileNotFoundException: ファイルまたはアセンブリ 'Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'、またはその依存関係の 1 つが読み込めません
でした。指定されたファイルが見つかりません。
ファイル名 'Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' です。

>ところで例題のコードは何をするコードなのか今ひとつわからないのですが,
>VS2005にあるWindowsFormのHtmlDocumentでは実現できないのでしょうか?
>COMは開放が面倒なので.NETでできることは.NETでやった方がいいのでは?

すいません、コードが実処理の抜粋なのでわかりづらかったですね。
本来ならば、この後に、HTMLを細工する処理が入ります。当初は、.NET1.1で開発
しており、そのときにはこうするしか方法が見つけられませんでした。
急遽.NET2.0への移行となり、今までのコードが動くかどうか検証しているときに
この問題が見つかったので、コードを修正することは、まったく考えていませんでした。
HtmlDocumentなるものの存在に気づいたのも、2日ほど前のことで、まだ使用方法も
勉強しておりません。
どうしても、動かないのであれば HtmlDocumentを使用することを検討したいと思います。
おっしゃるとおり、COMが厄介なのもわかっておりますが、大きなアプリのなかの
一機能ですので、できればコードを変えたくないというのが実情です。

以上、まとまりがなくなってしまいましたが、よろしくお願いいたします。


0
引用返信 編集キー/
■3442 / inTopicNo.8)  Re[7]: .NET2.0でのMicrosoft.mshtml.dllの動作について
□投稿者/ YAS 伍長(42回)-(2006/05/06(Sat) 16:48:59)
YAS さんの Web サイト

分類:[C#] 

開発環境でもそのエラーがでるのでしょうか?
それとも配付先の環境のみでエラーになるのでしょうか?

0
引用返信 編集キー/
■3443 / inTopicNo.9)  Re[8]: .NET2.0でのMicrosoft.mshtml.dllの動作について
□投稿者/ あちゃ 二等兵(6回)-(2006/05/06(Sat) 16:59:10)

分類:[C#] 

開発環境ではまったく問題ありません。(参照設定を変更しなくても動いていました)
配布先PCのみが動かない状態です。

配布先の環境は、WinXP SP2 + .NET Framework 2.0 + Office2003 です。

なにか、わかりますでしょうか?

0
引用返信 編集キー/
■3444 / inTopicNo.10)  Re[9]: .NET2.0でのMicrosoft.mshtml.dllの動作について
□投稿者/ YAS 伍長(43回)-(2006/05/06(Sat) 17:44:33)
YAS さんの Web サイト

分類:[C#] 

参照設定をカスタムラッパーに変更し,配付先にはdllを導入「しない」状態で動かないのですね。

う〜ん。おかしいですね。

大きなプログラムとのことですので,クラスライブラリといった形で,いくつかのdllに分かれているのではないでしょうか。そちらの方の参照設定が古いままとかの可能性はありませんか?

また,テスト用にmshtmlを使う小さなプログラムをVS2003,VS2005それぞれで書いてみてどのような挙動をするか確認してみるとよいと思います。

0
引用返信 編集キー/
■3445 / inTopicNo.11)  Re[10]: .NET2.0でのMicrosoft.mshtml.dllの動作について
□投稿者/ あちゃ 二等兵(7回)-(2006/05/06(Sat) 18:03:32)

分類:[C#] 

お世話になります。

先に載せたコードは、開発していたプログラムから抜き出して、テストプロとしたものなのです。
テストプロ自体は単純で、Formにボタンを貼り付けクリックでCreateHtmlDocument()を呼び出すだけです。

VS2005で作成したものなので、VS2003で作成して試してみます。
ちなみに開発環境にはVS2003が残ったままです。

0
引用返信 編集キー/
■3450 / inTopicNo.12)  Re[11]: .NET2.0でのMicrosoft.mshtml.dllの動作について
□投稿者/ YAS 伍長(45回)-(2006/05/07(Sun) 08:06:09)
YAS さんの Web サイト

分類:[C#] 

ごめんなさい,うそを書いてしまったようです。

・自動生成ラッパーを作成するのはVS2005β2のようです。また,自動生成ラッパーのファイル名は「Interop.MSHTML.dll」でした。

・VS2003をインストールし直して確認したところ,VS2003もVS2005もMicrosoft.mshtml.dllを利用するようです。

・また,.NET2.0もMicrosoft.mshtml.dllはインストールされないのでdllを配付先にコピーする必要があります。

以前にβ2で作成したmshtmlのサンプルをVS2003で作成したものと勘違いして間違った情報を書き込んでしまいました。混乱させてしまい,申し訳ありませんでした。


0
引用返信 編集キー/
■3451 / inTopicNo.13)  Re[12]: .NET2.0でのMicrosoft.mshtml.dllの動作について
□投稿者/ YAS 伍長(46回)-(2006/05/07(Sun) 08:40:25)
YAS さんの Web サイト

分類:[C#] 

Microsoft.mshtml.dllを使用せず,下記リンクを参考に遅延バインディングでサンプルを作ってみてはいかがでしょう。

http://support.microsoft.com/default.aspx?scid=kb;JA;305622

遅延バインディングで動作しないならば原因はMicrosoft.mshtml.dllよりもmshtmlそのものにあると考えられます。

0
引用返信 編集キー/
■3452 / inTopicNo.14)  Re[13]: .NET2.0でのMicrosoft.mshtml.dllの動作について
□投稿者/ あちゃ 二等兵(8回)-(2006/05/07(Sun) 10:20:45)

分類:[C#] 

おはようございます。
いろいろ調べてもらっているようで、お手数をおかけします。

さて、私の方もひとつ言い忘れていた情報がありました。(ひょっとしてこれが重要なのかも・・・)
開発環境にはSQL Serverが入っています。この環境で動作することは確認していましたが、SQL Serverが入っていない環境では試していませんでした。
試しに、配布先のPCにもSQL Serverを入れてみたところテストプロが動作することを確認しました。
SQL Serverが影響しているとは思いもしなかったので、言ってなかったのですが・・・
諸事情により、今すぐ開発環境からSQL Serverを削除することはできず、確認ができないので、どうしたものかと次の作戦を検討中です。

遅延バインディングも試してみたいと思います。(私には敷居が高そうで、実装できるかちょっと不安ですが・・・)


0
引用返信 編集キー/
■3456 / inTopicNo.15)  Re[14]: .NET2.0でのMicrosoft.mshtml.dllの動作について
□投稿者/ 中博俊 神(405回)-(2006/05/07(Sun) 13:32:06)
中博俊 さんの Web サイト

分類:[C#] 

橋渡し
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=387376&SiteID=7

0
引用返信 編集キー/
■3465 / inTopicNo.16)  Re[15]: .NET2.0でのMicrosoft.mshtml.dllの動作について
□投稿者/ あちゃ 二等兵(9回)-(2006/05/08(Mon) 12:00:17)

分類:[C#] 

お世話になります。

色々試してみた結果、 Microsoft.mshtml.dll を .NET Framework 2.0 に付属している、regasm.exe を使用してレジストリ登録をすると動作可能となりました。

.NET Framework 1.1の時はレジストリ登録なしで動いていたものが、2.0では登録が必要というところが腑に落ちませんが、こういうものなのでしょうか?

ひとまず動くようになりましたので、一安心です。

0
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -