リモートオートメーションの実装方法をご教授下さい – プログラミング – Home

リモートオートメーションの実装方法をご...
 
通知
すべてクリア

[解決済] リモートオートメーションの実装方法をご教授下さい


STSK
 STSK
(@STSK)
ゲスト
結合: 18年前
投稿: 12
Topic starter  

現在VS2005(VC++)にて、以下の構成でのプロセス間通信を実装しようとしています。

            通信
  PC1 <-----------------------------------> PC2 ActiveX.EXE(2)
    <-----------------------------------> PC3 ActiveX.EXE(3)
   ActiveX.EXE(1)

 ・ActiveX.EXE(1)がリモートオートメーションにてActiveX.EXE(2)と
  ActiveX.EXE(3)を起動する。
 ・ActiveX.EXE(2)とActiveX.EXE(3)は同じ実行ファイル。

これを実装する為に、とりあえずローカルPC内にて、ActiveX.EXE(1)が
ActiveX.EXE(2)を起動する事を確認しました。

  コードイメージ(ActiveX.EXE(1)):
// ---------------------------------------------------------------
// 接続
tSvr1.CreateDispatch( _T( Server2.Application ), NULL );
// データ設定
tSvr1.SetData( nData );
// データ取得
tSvr1.GetData( &nData );
// 切断
tSvr1.ReleaseDispatch();
// ---------------------------------------------------------------

そこで、ActiveX.EXE(2)をリモートPCに移動してみようと思ったのですが…
どのようにしてレジストリ登録すれば良いのかが分かりません。
(ローカル時はActiveX.EXE(2)を1回コールし、レジストリ登録しました)

Microsoftのページにて、オートメーションマネージャなる管理ツールが
存在するように見えるのですが、VS2005のインストールフォルダにも
インストールDVD内にも存在しないようです。
   http://msdn2.microsoft.com/ja-jp/library/khas5xda(VS.80).aspx

方法をご存知の方がいらっしゃいましたら、ご教授下さい。

また、ActiveX.EXE(2)とActiveX.EXE(3)は同じプロセスですので、
『どちらのPCのEXEに接続する』といった指定が出来る必要があるのですが、
CreateDispatch()にはそのような引数が見当たりません。

DCOM(ATL)でしたら、COMライブラリのインスタンス生成時(CoCreateInstanceEx())に
サーバ名を渡す等のカスタマイズが出来るのですが、ActiveX.EXEの場合は
どう指定をすれば良いのでしょうか?

長文で申し訳ありません。
宜しくお願い致します。


引用未解決
トピックタグ
STSK
 STSK
(@STSK)
ゲスト
結合: 18年前
投稿: 12
Topic starter  

自己レスです。

CreateDispatch()のソースをトレースした所、中でCoCreateInstance()を
コールしていました。つまり、PCの指定は出来ないようです。

dcomcnfgコマンドで該当のCOMのプロパティを参照し、起動先のサーバを
指定しておけば、CreateDispatch()でもリモートExeへのアクセスが
可能になる気がします。(未検証)

接続先のPCが動的に変わるアプリケーションの場合(今回ワタシが作って
いるのもコレ)、CoCreateInstanceEx()により接続を行う必要がありそうです。

オートメーションマネージャについては、調査未です。
…が、オートメーションといっても中身はCOMなので、DCOMサーバが
動いてさえいれば、特に気にしなくて良さそうです。

 ※情報がありましたら、コメントをお願いします。

ひとまず解決とさせて頂きます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました