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

わんくま同盟

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

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


■93258 / )  Re[2]: vb.netで作成したCOMをvb.netでCOMとして参照
□投稿者/ まる (6回)-(2019/11/30(Sat) 20:32:37)
お世話になっております。まるです。

またもや返信が遅れてしまい申し訳ございません。順次返信させて頂きます。

No93193 (魔界の仮面弁士 さん) に返信
> .NET による ActiveX DLL 作成手順としては、このあたりが良くまとまっているかと思います。
> http://j.mp/35DOyAw
> https://qiita.com/tomochan154/items/1ce33f2aef167c0fed9d
> 上記 URL にもありますが、事前バインディングの場合は、イベントインターフェイスを用意して、
> それを ComSourceInterfaces 属性で指定するようにします。

ご紹介頂きましてありがとうございます。二つとも拝見させて頂きました。どちらも本当にわかりやすくて助かりました。
ComClassではなくこのような属性にする必要があったのですね…。大変勉強になりました。
ただ、ご紹介頂いた先に載っていた属性や、インターフェイスの実装などを行って再度事前バインディングを再度試みたのですが、
私のやり方が悪かったのか、前回と同じように、「直接参照する必要がある〜」といったエラーが
出て事前バインディングすることができませんでした。

もし、もしお時間があったらの範囲でなのですが、どなたか上記のVBExeCOMServerをダウンロードしていただき、属性を正しくつけることでVBExeCOMServerが他のvb.netのプロジェクトから事前バインディングできるのかどうか、恐縮ですがご確認いただくことなどはできますでしょうか。
何度もソースコードを見返し、ご紹介頂いた先の説明も全て読んで適用したはずなのですが、もしかしたら私のやり方が悪かっただけで、正しく実装すれば事前バインディングできるのでは、と希望を捨てられずにおります。
私が作成したソースコードを載せられれば最善だとは思うのですが、申し訳ございませんが、掲示板をいじる際には手元にソースコードがないため、載せることが難しい状態です。


> 相手が VBScript なら
> VB.NET 側からは DispId(0) に対するメソッド呼び出しでコールバックできます。
>  CallByName( vbsからGetRefでSetされたオブジェクト, "[DispId=0]", CallType.Method, 追加の引数があればここに)
申し訳ございません。vbsを使用する、という所が上手く呑み込めておらず、vb.netのプロジェクトで実行時バインディングとして使用するためには、vbsを経由する必要がある、ということでしょうか。(文章の読解が間違っておりましたら申し訳ございません)


No93198 (KOZ さん) に返信
> Excel の場合だと、レイトバインドでもイベントを補足できました。
このようなシンクというものを使用した方法があるのですね。ご紹介頂きましてありがとうございます。大変勉強になります。
ご紹介頂いたソースコードをもとに、VBExeCOMServerに適用するようにして実行してみたところ、adviseの部分で「値が有効な範囲にありません」とエラーが出てしまいました。
こちらでもエラーの意味について調べてみたのですが、私が調べた範囲では参考になりそうな記事を見つけることができませんでした。

このエラーの理由などについて、KOZさんは勿論、他にご存知の方がいらっしゃいましたら、ご教授頂くことはできますでしょうか。


よろしくお願いいたします。
返信 編集キー/


管理者用

- Child Tree -