mcrblog

vcpp-ml

2002年12月

27

[vcpp 00060084] RE: リモートPCのOS名取得で95と98の見分け方

 渋木です。

> ネットワーク上の他のPCに利用できる方法が
> あれば解決なのですが。

 各クライアントが Windows 系で、WMI プロバイダがインストール済みで、(おそら
く)同一ネットワーク上でという前提でよければ、WMI オブジェクトに接続してOS
の諸元を取得することが出来たと思います。


--
// 渋木宏明 (Hiroaki SHIBUKI)
// mailto:h...@mbi.nifty.com
// http://www.hidori.jp/
//
27

[vcpp 00060083] Re: CWndを使用した常駐プロセスの作成方法


On Fri, 27 Dec 2002 04:44:05 +0900
Keisuke Suzuki <k...@ssi.co.jp> wrote:

>  2. 1. のアプリケーションは、最終的に「Win32 サービス」にする予定。

  GUIアプリケーションと、サービスアプリケーションは根本的に
作成方法が異なります。サービスとして作成したいのであれば、最
初からサービスとして作成した方が良いでしょう。

>  3. 1. のアプリケーションは、クライアントPCとTCP/IPのソケット通信をしたい。

  サービスでは基本的にメッセージポンプが機能しません。したがっ
て、ソケット通信を行いたいのであれば、MFCのCSocket派生クラス
を用いずに、WindSockAPIを直接利用してください。

> 自分なりに試行錯誤したのですが、困り果てています。

  コードを多少は眺めましたが、何をしたいのかがまったく分かり
ませんでした。根本的に使い方を間違えている(理解していない)と
いうことだけは読み取れましたが。

  自分なりに試行錯誤する前に、基本を抑えながら順を追って勉強
していくことをおすすめします。現在のコードのままでは、何処を
どうしても苦労ばかりで完成品にはいたらないでしょう。

  MFCはMicrosotが想定した使い方にそって利用しないと、非常に
苦労することが多いです。現在のあなたのコードは、想定された使
い方を完全に無視しています。MFCのソースコードを読み内部まで
理解されて上で行うスキルを持っているのであれば、とめる理由は
ありません。ですが貴方は基礎すら分かっていないように思えます。

> 「メイン メッセージ ループ」とうまく関連付けられないでしょうか。

  関連付けるの意味は?
  MFCを利用するのであれば、WinMainではなく、CAppInstanceを用
いてください。MFC関連のイニシャル処理が行われなければ、正常
に機能しないのは当然です。

> 「メインのインスタンス」との関連付け方法も良く分かっていないようです。

  サービスからGUIアプリケーションのウィンドウハンドルを取得
するには、OpenDesktopでデスクトップとサービスプロセスの関連
付けを行わないとければなりません。

-----------------------------------------------------------
   ヘヘ   ヘヘ       成田 邦広
  ミ''ミ ミ..ミ      E-Mail  : m...@abox9.so-net.ne.jp
 ヽ(  )   (  )ζ    
===========================================================
27

[vcpp 00060083] Re: CWndを使用した常駐プロセスの作成方法


On Fri, 27 Dec 2002 04:44:05 +0900
Keisuke Suzuki <k...@ssi.co.jp> wrote:

>  2. 1. のアプリケーションは、最終的に「Win32 サービス」にする予定。

  GUIアプリケーションと、サービスアプリケーションは根本的に
作成方法が異なります。サービスとして作成したいのであれば、最
初からサービスとして作成した方が良いでしょう。

>  3. 1. のアプリケーションは、クライアントPCとTCP/IPのソケット通信をしたい。

  サービスでは基本的にメッセージポンプが機能しません。したがっ
て、ソケット通信を行いたいのであれば、MFCのCSocket派生クラス
を用いずに、WindSockAPIを直接利用してください。

> 自分なりに試行錯誤したのですが、困り果てています。

  コードを多少は眺めましたが、何をしたいのかがまったく分かり
ませんでした。根本的に使い方を間違えている(理解していない)と
いうことだけは読み取れましたが。

  自分なりに試行錯誤する前に、基本を抑えながら順を追って勉強
していくことをおすすめします。現在のコードのままでは、何処を
どうしても苦労ばかりで完成品にはいたらないでしょう。

  MFCはMicrosotが想定した使い方にそって利用しないと、非常に
苦労することが多いです。現在のあなたのコードは、想定された使
い方を完全に無視しています。MFCのソースコードを読み内部まで
理解されて上で行うスキルを持っているのであれば、とめる理由は
ありません。ですが貴方は基礎すら分かっていないように思えます。

> 「メイン メッセージ ループ」とうまく関連付けられないでしょうか。

  関連付けるの意味は?
  MFCを利用するのであれば、WinMainではなく、CAppInstanceを用
いてください。MFC関連のイニシャル処理が行われなければ、正常
に機能しないのは当然です。

> 「メインのインスタンス」との関連付け方法も良く分かっていないようです。

  サービスからGUIアプリケーションのウィンドウハンドルを取得
するには、OpenDesktopでデスクトップとサービスプロセスの関連
付けを行わないとければなりません。

-----------------------------------------------------------
   ヘヘ   ヘヘ       成田 邦広
  ミ''ミ ミ..ミ      E-Mail  : m...@abox9.so-net.ne.jp
 ヽ(  )   (  )ζ    
===========================================================
27

[vcpp 00060082] Re: ATLコンポーネントとJavaScriptの引数経由のデータ受けた?

 みなさんの色々なアドバイスありがとうございます。
  結局、JavaSpからCOMの引数を経由しての
引き渡しは難解のようです。

 しかたないので、1つづつ戻り値で受け取る
しかないようです。
ありがとございました。

T.HASHIMOTO

PS: ・ 「&buf」は×、「buf」が正しい記述方法でした。
     すみませんでした。
    ・ IDLの引数指定は[out]にしています。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/               後書き
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

 ちなみに、色々試してみたのですが、

1.■JavaSp内でArray()を使うと参照渡しが可能なことが
  わかりました。
    //------------------------------------
    // スクリプト( 呼び出し側 )
    //------------------------------------
    <SCRIPT language = "JavaScript">

       // Array()で配列準備。
        var a = new Array();
        sub( a );         // JavaSp内関数
        alert("値:" + a );// 表示
        // 結果:「値: AABBCC」と表示されます。

    //----------------
    // Sub関数
    //----------------
    function sub( t ) {
        t[0] = "AABBCC"; //引数にセット
    }
    </SCRIPT>

2.■これを踏まえて、COMを呼び出してみたのですが、
    VARIANTタイプが「VT_DISPATCH」 となってしまい、
  設定方法も解らず残念しました。

    //------------------------------------
    // スクリプト( 呼び出し側 )
    //------------------------------------
    <SCRIPT language = "JavaScript">

       // Array()で配列準備。
       var a = new Array();

       // COM呼び出し。
       // COM側の解釈が解らず残念。
       // 「a」タイプ VT_DISPATCH
       ver ret = Atl.test( a );
    </SCRIPT>
27

[vcpp 00060082] Re: ATLコンポーネントとJavaScriptの引数経由のデータ受けた?

 みなさんの色々なアドバイスありがとうございます。
  結局、JavaSpからCOMの引数を経由しての
引き渡しは難解のようです。

 しかたないので、1つづつ戻り値で受け取る
しかないようです。
ありがとございました。

T.HASHIMOTO

PS: ・ 「&buf」は×、「buf」が正しい記述方法でした。
     すみませんでした。
    ・ IDLの引数指定は[out]にしています。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/               後書き
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

 ちなみに、色々試してみたのですが、

1.■JavaSp内でArray()を使うと参照渡しが可能なことが
  わかりました。
    //------------------------------------
    // スクリプト( 呼び出し側 )
    //------------------------------------
    <SCRIPT language = "JavaScript">

       // Array()で配列準備。
        var a = new Array();
        sub( a );         // JavaSp内関数
        alert("値:" + a );// 表示
        // 結果:「値: AABBCC」と表示されます。

    //----------------
    // Sub関数
    //----------------
    function sub( t ) {
        t[0] = "AABBCC"; //引数にセット
    }
    </SCRIPT>

2.■これを踏まえて、COMを呼び出してみたのですが、
    VARIANTタイプが「VT_DISPATCH」 となってしまい、
  設定方法も解らず残念しました。

    //------------------------------------
    // スクリプト( 呼び出し側 )
    //------------------------------------
    <SCRIPT language = "JavaScript">

       // Array()で配列準備。
       var a = new Array();

       // COM呼び出し。
       // COM側の解釈が解らず残念。
       // 「a」タイプ VT_DISPATCH
       ver ret = Atl.test( a );
    </SCRIPT>
記事検索
Amazon.co.jp
  • ライブドアブログ