@egtraイグトランスの頭の中(のかけら)ActiveBasicを中心にプログラミングの話をぼちぼちと。Qiitaの22日目の記事です。OBJREFモニカーの回で、コンピュータ間のマーシャリングもできるらしいことを書きました。今回はそれを試してみることにしました。いうわけで、結局DCOMに足を突っ込んでしまいました。2台のWindowsマシンを用意します。接続を待ち受けるC++側と接続しに行くVBScript側です。以下の準備を行っておきます。双方を同じLANに接続する。双方で同じ名前・パスワードのユーザーを作り、そこでプログラムを実行する。デフォルトではパスワードが空だとうまくいきません。C++プログラムを実行する側では、Windowsファイアウォールなどを切っておくか、除外設定を行う。DCOMを無効にしていたら、有効に戻す。参考:Geekなぺーじ:DCOM(分散COM)を無効にするC++側プログラムは以下です。main関数以外は前々回(OBJREFモニカー)とほぼ同じです。OBJREFモニカーの文字列を標準出力に表示して、Enterが入力されるまで待ち受ける、という内容です。}VBScript側は以下です。前々回と変わっていません。/str:モニカーのように、コマンドライン引数でモニカーを指定します。hoge()これで動かしてみました。1台目のコンピュータでC++プログラムを起動しておきます。次に、画面に表示されたOBJREFモニカーを2台目のコンピュータで、objref.vbsのコマンドライン引数に書き写し、起動するという手順です。すると、無事(?)C++側でHoge::Invokeが出力され、Hoge::Invoke関数が呼び出されたことが確認できました。CoLockObjectExternalしているため、VBScriptを実行するたび、何度でも動きます。認証が掛かっているとは言え、これはちょっとやめてほしい場合もあると思います。いうわけで、次回はCOMサーバープロセスにおいて他コンピュータからのアクセスを禁じる話の予定です。コメントをキャンセルメールアドレスが公開されることはありません。WPThemes.Info。