新規作成に
"ActiveX dll"
というのがありますが、これで作ったdllに標準exeからアクセスは
出来ないのでしょうか。
クラスモジュールにPublic Functionで登録して
コンパイル→API呼び出しを行うと
エントリ〜がdllファイル"..."内に見つかりません。
というエラーが出てきてしまいます。
使用しているのはVB 6.0 Enterpriseです。
初めての書き込みですがよろしくお願いいたします。
んと、DLLではありますけど、APIを提供してくれているような、DLLではなく、
本来はインターネット上で使うため(なんでしたよね?)のもので、
いちおうVBでもDelphiでもCでも使えるようですけど、
レジストリ登録が必要になります。
HSPやひまわりとかでは使えないかも。
レジストリ登録してある状態でなら、
"参照設定"で、DLLを参照するように設定すれば、
DLL名(DLLのタイトル)というオブジェクトがあるのと同じ感じで操作できます。
(ただ作った本人のパソコンでは、勝手に登録されるようですねぇ…)
本当のAPIが作りたいのなら、
BorlandのCコンパイラで作るとか、そういうのがお勧めです。
Delphiでもできますね。
VBのActiveX dllでクラス内に作成したプロシージャを呼び出す場合は
DLLをプロジェクトの参照設定で参照しなければいけません。
これにより読み出されているClsXXXXのインスタンスを作成し、
Private moComFunc As New ClsXXXX
もちろんプロシージャレベルでもかまいません
moComFunc.##### ←ClsXXXX内のメソッド・プロパティを使用できます。
ClsXXXX内にイベントが存在する場合でも
Private WithEvents XXXXX AS ClsXXXX
の様に定義する事によりコードウィンドウの
オブジェクト内にXXXXXがエントリーされXXXXX内のイベントが追加されているはずです。
DLLコンパイル時のコンポーネント・のバイナリ互換さえ外さなければ
このDLLを参照しているEXEが複数存在していても
DLL側に不具合が発生した時参照していますが、
DLLの再コンパイルだけで全てのEXEのDLLから呼び出している関数の修正がされた
と考えられるので十分DLLとして機能すると思いますよ。
たかみちえ様、マザー様、ありがとうございました。
C#からだったら作れるんですよ。
ただ、完全にVBから作りたいと思いまして・・・。
参照設定、やたらとMicrosoft,Adobe,Maya,LightWaveなどの
コンポーネントが出てきたので、不勉強のままここに書き込みを
してしまいました。
しかしながら、それらを覚える契機を与えてくださったこと、
それだけでもこの掲示板に書き込んだ意義があったというものです。
皆様、ご教授ありがとうございます。
これからも顔を出していきたいと思いますのでよろしくお願いします。
ツイート | ![]() |