というわけでDCOMを使いましょう。 軽量のプロトコルだしセッション状態も維持できるし。 でもDCOMってどーもとっつきにくい(実際深いところまでやるとそーなんですが) と思われているので、まずはDCOMの簡単な実験をしてみましょう。
Function Sum(Byval x as Long, Byval y as Long) As Long Sum= x+y End Functionとか入力します。
さて、サーバ機でregeditを開き、HKEY_CLASSES_ROOT\Hello1.Class1のCLSIDの値を見てください。{7A26DA41-AA01-4503-A3E0-6316BA116EE1}とか登録されていると思います。
これとまったく同じ内容をクライアント機に設定します。設定するのはこのCLSIDキーだけで、HKCR\CLSIDの同名キーの内容などは不要です。
Enterprise版の場合、Hello1.VBRというファイルが作成されていると思います。
これをクライアント機にコピーし、クライアント機のコマンドラインから
clireg32 hello1.vbrで登録することにより、
上記のCLSIDの設定等を自動的に行ってくれます。clireg32は
c:Program Files\MS VS\Common\Toolsとかにあるので検索して場所を調べてください。
Hello1.VBRは次のような内容で、青字が該当部分です。
VB5SERVERINFO VERSION=1.0.0 HKEY_CLASSES_ROOT\Typelib\{BDBED751-B3E0-404D-9AEE-FC5E154A7211}\2.0\0\win32 = Hello1.dll HKEY_CLASSES_ROOT\Typelib\{BDBED751-B3E0-404D-9AEE-FC5E154A7211}\2.0\FLAGS = 0 HKEY_CLASSES_ROOT\Hello1.Class1\CLSID = {7A26DA41-AA01-4503-A3E0-6316BA116EE1} HKEY_CLASSES_ROOT\CLSID\{7A26DA41-AA01-4503-A3E0-6316BA116EE1}\ProgID = Hello1.Class1 HKEY_CLASSES_ROOT\CLSID\{7A26DA41-AA01-4503-A3E0-6316BA116EE1}\Version = 2.0 HKEY_CLASSES_ROOT\CLSID\{7A26DA41-AA01-4503-A3E0-6316BA116EE1}\Typelib = {BDBED751-B3E0-404D-9AEE-FC5E154A7211} HKEY_CLASSES_ROOT\CLSID\{7A26DA41-AA01-4503-A3E0-6316BA116EE1}\LocalServer32 = Hello1.dll HKEY_CLASSES_ROOT\INTERFACE\{25086FD9-F23C-4346-96DB-570AD10F634D} = Class1 HKEY_CLASSES_ROOT\INTERFACE\{25086FD9-F23C-4346-96DB-570AD10F634D}\ProxyStubClsid = {00020420-0000-0000-C000-000000000046} HKEY_CLASSES_ROOT\INTERFACE\{25086FD9-F23C-4346-96DB-570AD10F634D}\ProxyStubClsid32 = {00020420-0000-0000-C000-000000000046} HKEY_CLASSES_ROOT\INTERFACE\{25086FD9-F23C-4346-96DB-570AD10F634D}\Typelib = {BDBED751-B3E0-404D-9AEE-FC5E154A7211} HKEY_CLASSES_ROOT\INTERFACE\{25086FD9-F23C-4346-96DB-570AD10F634D}\Typelib\"version" = 2.0クライアント機でVB6を起動して標準EXEでプロジェクトを作り、 フォームにボタンを1つはりつけて、 そのclickイベントに次のように記述します。
Private Sub Command1_Click() Dim a As Object Set a = CreateObject("Hello1.Class1", "servername") MsgBox a.Sum(10, 10) End Subservernameにはサーバ機の名前かIPアドレスを記述します。 んだば実行してボタンを押してみましょう。簡単でしょ?
なお、サーバ側がEnterprise版の場合、 作成された.VBRと.TLB(タイプライブラリ)をクライアントに持ってきて、 clireg32でサーバ名も指定して登録すると、 上記CreateObjectでサーバ名を指定せずにオブジェクトを作成したり、 VBの参照設定でHello1.Class1を参照しておいて 普通のVB変数のように(アーリーバインディングで)扱ったりして、 あたかも遠隔であることをまったく感じさせずに プログラミングさせることも可能です。