こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C++で開発するのですが、できるのかどうか解りません。

Windows2000Server+C++Builderで開発します。
以下の点がわかりません。解る分だけでいいので教えてください。
また、参考となるURLなども教えていただけるとありがたいです。

1.子スレッドが終了した場合、親スレッドはそれを検知出来ますか?
  ポーリングではなく、イベント通知で検知したい。
2.別EXEにWindowMwssageを送信できますか?(共有メモリなどを利用しますので必要な情報は渡せます。)
3.共有メモリの情報を取得するのと、レジストリからデータを読むのとどちらが高速ですか?(結構長いデータも扱います)
4.共有メモリはファイルマッピングを必要としますか?

以上、お願いします。

投稿日時 - 2002-10-24 15:40:39

QNo.388719

困ってます

質問者が選んだベストアンサー

>2.についてですが、exeはサービスとして動作する為、画面を持ちません。
>画面がないと無理ということですか

送信元、送信先のどちらがサービスなのでしょうか?

送信元はウィンドウがなくてもかまいません。
送信先にはウィンドウが必要です。ただし、非表示でもかまいません。(メッセージを受けるだけ)

非表示のウィンドウもNGであれば、メッセージではなくパイプなどを使用したプロセス間通信が必要になります。

投稿日時 - 2002-10-25 23:52:00

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

はっきりとした前提条件の記述がないのでこれでいいのか分かりませんが・・・

1.可能です。
WaitForSingleObject()などの待機関数を使用します。

2.対象のEXEにウィンドウが存在すれば、可能です。
PostMessage()やSendMessage()を使用します。

3.レジストリはデータベースと同様なものです。
単純にメモリを読むよりはDBは遅いですよね?
ただし、単純にメモリに格納するだけでは格納位置などの情報を保持しなければいけないということを念頭においてください。

4.DLL中であれば、ファイルマッピングしなくてもプロセス間のメモリ共有は可能です。
ただし、共有を行いたいメモリ領域に対して特別な宣言を必要とします。
コンパイラ依存部分なので、私はC++Builderを使ったことがないので詳しくは説明できませんが。

投稿日時 - 2002-10-24 22:06:32

補足

2.についてですが、exeはサービスとして動作する為、画面を持ちません。
画面がないと無理ということですか?

その他については、回答ありがとうございました。

投稿日時 - 2002-10-25 09:58:49

あなたにオススメの質問