出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

ActiveX-dllのレジストリ登録は省略可能?   北岳さん [2001/12/25 11:22:21] [1314]
  Re:ActiveX-dllのレジストリ登録は省略可能?   Tomitomiさん [2001/12/25 11:26:34] [1315]
    Re:ActiveX-dllのレジストリ登録は省略可能?   北岳さん [2001/12/25 18:30:33] [1317]
    一応、省略可能でしたが・・・   北岳さん [2001/12/26 9:53:25] [1319]
  Re:ActiveX-dllのレジストリ登録は省略可能?   喜平さん [2001/12/27 12:49:07] [1321]
    Re:ActiveX-dllのレジストリ登録は省略可能?   北岳さん [2001/12/27 13:48:41] [1323]

[1314] ActiveX-dllのレジストリ登録は省略可能?
投稿者:北岳さん 2001/12/25 11:22:21
最初に雑談。別スレッドの
『特定ファイル一覧』 Sawaさん [2001/12/21 14:12:01] [1301]
に触発され、この3連休のあいだに、
指定フォルダ内の指定拡張子を持つファイルを標準exeのリストボックスに表示するActiveX-DLLを、VB5で作ってみました。(VB6は不所持、未経験。)
ところで私は ActiveXという用語は、インタネットでサーバ側アプリをクライアントが利用する際の技術、と理解しており、今回はスタンドアロンで使うつもりで作成。
 
(1) ActiveX dll:
 自作関数内から FindFirstFileA/FindNextFileA/GetFileAttributesA 呼び出し。
(2) 標準exeのフォームモジュール:
 フォルダ名+拡張子名--- textbox
 ファイル名一覧--- listbox
 
public とprivateの区別に悩まされつつも、クラスモジュールの自作関数(as variant)でファイル名一覧(配列)を作り、
ファイル名は配列ごと、ファイル数は同一関数内でpublic変数に納め、
結果を標準exe の listboxへ表示。
みごと完成して、出来上がったexeを動かしていたとき、にわかに既視感が・・・
 
あ、そうか、苦労して作った画面は、VBではお馴染みの FileListBox そのものじゃんか。
APIを使っても特に速い感じがしなかったのは、FileListBox と同程度の速さだったからなんだ・・・
FileListBoxだったら3分で作れるのに、3連休を潰して結局何やったんでしょうかねぇ。
 
------------------
【Q】
ところで dllへのフルパスを指定して、レジストリへの登録なしで使おうと試みましたが、どうにも成功しませんでした。
(dllコンパイルと同時に登録されるので、regsvr32.exe /u でいちいち削除して実験。)
ActiveX DLL って、サーバでも、スタンドアロンでも、レジストリに登録しないと使えないのでしょうか。

[1315] Re:ActiveX-dllのレジストリ登録は省略可能?
投稿者:Tomitomiさん 2001/12/25 11:26:34
こんにちは、Tomitomiです。

> 【Q】
> ところで dllへのフルパスを指定して、レジストリへの登録なしで使おうと試みましたが、どうにも成功しませんでした。
> (dllコンパイルと同時に登録されるので、regsvr32.exe /u でいちいち削除して実験。)
> ActiveX DLL って、サーバでも、スタンドアロンでも、レジストリに登録しないと使えないのでしょうか。

実験してないのでわかりませんが憶測で書くと、
VBの参照設定に読み込ませればレジストリに登録なしで使えるかも?
これもどっかで見た話ですが、
IISのトランザクションサーバ?に登録すると使えるらしい。。
僕はレジストリに登録して使ってますが。。w

[1317] Re:ActiveX-dllのレジストリ登録は省略可能?
投稿者:北岳さん 2001/12/25 18:30:33
tomitomiさん有難うございます。
当面は dllはレジストリに登録した形で使うことにしました。
ご提案内容は正月に確認したいと思います。

[1319] 一応、省略可能でしたが・・・
投稿者:北岳さん 2001/12/26 9:53:25
>> ActiveX DLL って、サーバでも、スタンドアロンでも、レジストリに登録しないと使えないのでしょうか。
> VBの参照設定に読み込ませればレジストリに登録なしで使えるかも?
 
プログラムを作成しているフォルダ(d:\folder\vbsrc)に標準exeと自作dllを置き、
標準exe側の参照設定でこのdllを指定し(絶対パスでしか指定できない様子)、
dllコンパイル時に作られたレジストリキーをregsvr32.exe/uで削除し、
標準exeを動かしたら、
(おっしゃる通り)レジストリ登録なしでも使えました(1)。
 
<確認実験>
試しにこのフォルダのdll名を変えて実行したら、exeから「ActiveXコンポーネントはオブジェクトを作成できません」エラー、
dll名を元に戻したら再度 exeが正常実行されました。
レジストリに読みに行っていないことは確かです。
次にdll名は元のまま、フォルダをd:\folder\vbsrc2 に改名したら、再び「ActiveX・・・」エラー。(2)
 
確かに(1)参照設定すれば、レジストリに登録せず使えましたが、dllをフルの絶対パスで指定。
絶対パスが見つからないとき、(2)exeがあるフォルダ内でdllを探してはくれませんでした。
 
----------------
で、当初の目的「dll付きexeをイントラで配る」のは、僅かとは言えユーザ側の設定が必要なので、やめにしました。
 
今までの方法:
 [1] VBのランタイムDLLのみ最初にユーザのシステムフォルダにコピーして貰う
 [2] APIも自作関数も標準モジュール内に書く
 [3] フォームモジュールと[2]の関数をコンパイルして1つのexeを作る
 [4] そのexeを<a href="〜">で配布する。
これで何も問題はなかったので、やはり dllは、サーバだけで使うことにします。

[1321] Re:ActiveX-dllのレジストリ登録は省略可能?
投稿者:喜平さん 2001/12/27 12:49:07
> 【Q】
> ところで dllへのフルパスを指定して、レジストリへの登録なしで使おうと試みましたが、どうにも成功しませんでした。
 これは、当然。。activex は、レジストリへの登録が必要な技術です。vb ide 側で参照設定すると、勝手にレジストリへの登録処理を
やってくれるというだけのことです。コンパイルしたexe も、activex が見つかれば、登録してくれます。

> (dllコンパイルと同時に登録されるので、regsvr32.exe /u でいちいち削除して実験。)
 これは、activex をバイナリー互換として作成していれば、
大丈夫です。


[1323] Re:ActiveX-dllのレジストリ登録は省略可能?
投稿者:北岳さん 2001/12/27 13:48:41
そうでしたか。クリアになりました。
有難うございます。



TreeBBS For ASP V.0.1.3
Program By YasNet