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

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

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

Re[2]: MSHTML.IHTMLCanvasElement


(過去ログ 116 を表示中)

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

■68531 / inTopicNo.1)  MSHTML.IHTMLCanvasElement
  
□投稿者/ ポチ (1回)-(2013/10/25(Fri) 21:16:00)

分類:[.NET 全般] 

Windows7,C#4.0です。

ExcelVBAで

Microsoft HTML Object Library
(C:\Windows\SysWow64\mshtml.tlb)

を参照設定するとIHTMLCanvasElementなどのCanvasに関するメンバが使えるのに、

C#やVB.netで同じmshtml.tlbを参照設定しても使うことができません。
(mshtml.IHTMLDOMNodeなど昔からあるメンバは使えます)

C#からIHTMLCanvasElement等を使うことは可能でしょうか?

宜しくお願いいします。
引用返信 編集キー/
■68533 / inTopicNo.2)  Re[1]: MSHTML.IHTMLCanvasElement
□投稿者/ 魔界の仮面弁士 (397回)-(2013/10/25(Fri) 22:52:55)
No68531 (ポチ さん) に返信
> (C:\Windows\SysWow64\mshtml.tlbC:\Windows\SysWow64\mshtml.tlb)
> を参照設定するとIHTMLCanvasElementなどのCanvasに関するメンバが使えるのに、
> C#やVB.netで同じmshtml.tlbを参照設定しても使うことができません。
> (mshtml.IHTMLDOMNodeなど昔からあるメンバは使えます)

この場合、実際に参照されている物は、GAC にインストールされた PIA となります。
ということで、GAC 内の Microsoft.mshtml.dll のバージョンが、mshtml.tlb の定義よりも古いのでしょう。

ちなみに当方では C:\Windows\assembly\GAC\Microsoft.mshtml\ 配下に、
7.0 世代の Microsoft.mshtml.dll があり、それが参照されていました。
(このプライマリ相互運用機能アセンブリには、IHTMLCanvasElement が定義されていません)


なお、最新バージョンの IE に適合した PIA が用意されているかどうかは分かりません。

あったとしても、それが再頒布可能であるとは限りませんので、比較的新しいバージョンに
対応させたいのであれば、PIA に頼らない方がよいのかもしれません。
(たとえば、{a7ef5435-ab8e-4b36-b648-b2e023737406} の interface を自前定義して対応するとか)


> C#からIHTMLCanvasElement等を使うことは可能でしょうか?
dynamic 経由でのレイトバインドでは駄目なのですね?

手順としては面倒ですが、IE9 以降向けの SDK を導入して mshtml.idl を入手し、
そこから相互運用機能アセンブリを生成することもできます。

IHTMLCanvasElement 対応の 相互運用機能アセンブリを生成する手法としては:


(1) 対応バージョンの mshtml.idl を入手する。
http://www.microsoft.com/en-us/download/details.aspx?id=22934

(2) VS2012 の Visual Studio Tools の コマンドプロンプトを起動し、
下記のコマンドを実行します。

CD /D C:\TEMP
MIDL "C:\Program Files (x86)\Microsoft SDKs\Internet Explorer\v9\include\mshtml.idl"
TLBIMP MSHTML.TLB /out:Pochi.mshtml.DLL /namespace:mshtml /asmversion:9.0

(各種パスや asmversion は、必要に応じて変更してください)


これにより、相互運用機能アセンブリ (Pochi.mshtml.DLL) が生成されますので、
それを参照設定すれば、mshtml.IHTMLCanvasElement 型の変数を扱えるかと思います。

# もしかしたら、最新の Windows SDK も必要かも。
# http://msdn.microsoft.com/ja-jp/windowsserver/bb980924.aspx
引用返信 編集キー/
■68536 / inTopicNo.3)  Re[2]: MSHTML.IHTMLCanvasElement
□投稿者/ ポチ (2回)-(2013/10/26(Sat) 07:02:04)
No68533 (魔界の仮面弁士 さん) に返信

dynamicで可能でした。
ありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -