• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++で開発するのですが、できるのかどうか解りません。)

C++で開発する際の注意点と質問

このQ&Aのポイント
  • C++で開発する際の注意点と質問をまとめています。
  • Windows 2000 ServerとC++Builderを使用して開発します。
  • 子スレッドの終了を親スレッドが検知する方法や、別のEXEにWindowMessageを送信する方法、共有メモリとレジストリの性能比較、共有メモリのファイルマッピングに関する質問があります。

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>2.についてですが、exeはサービスとして動作する為、画面を持ちません。 >画面がないと無理ということですか 送信元、送信先のどちらがサービスなのでしょうか? 送信元はウィンドウがなくてもかまいません。 送信先にはウィンドウが必要です。ただし、非表示でもかまいません。(メッセージを受けるだけ) 非表示のウィンドウもNGであれば、メッセージではなくパイプなどを使用したプロセス間通信が必要になります。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

はっきりとした前提条件の記述がないのでこれでいいのか分かりませんが・・・ 1.可能です。 WaitForSingleObject()などの待機関数を使用します。 2.対象のEXEにウィンドウが存在すれば、可能です。 PostMessage()やSendMessage()を使用します。 3.レジストリはデータベースと同様なものです。 単純にメモリを読むよりはDBは遅いですよね? ただし、単純にメモリに格納するだけでは格納位置などの情報を保持しなければいけないということを念頭においてください。 4.DLL中であれば、ファイルマッピングしなくてもプロセス間のメモリ共有は可能です。 ただし、共有を行いたいメモリ領域に対して特別な宣言を必要とします。 コンパイラ依存部分なので、私はC++Builderを使ったことがないので詳しくは説明できませんが。

XxXxXxXxXx
質問者

補足

2.についてですが、exeはサービスとして動作する為、画面を持ちません。 画面がないと無理ということですか? その他については、回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 【c++】共有メモリについて

    【c++】共有メモリについて いつもお世話になっています。 共有メモリについて勉強していて、いろいろと調べていて気になったのですが、 「ファイルマッピング」と「メモリマップドファイル」とは 同じものなのでしょうか?全く違うものなのでしょうか? (ちなみに、これらは共有メモリを使用するための1つの方法である、という 認識で宜しいのでしょうか。) また、共有メモリのほうが、ソケット、パイプなどよりも高速アクセスできる 様ですが、どのぐらい高速なのか紹介しているサイトがありましたら 教えて頂けませんでしょうか。

  • ファイルマッピングについて

    ファイルマッピングについての質問です。 現在CreatFileMapping、OpenFileMapping、MapViewOfFileをつかって EXE間のデータのやり取りをしているのですが、 このファイルマッピングを利用して構造体を やりとりする事は出来ないものでしょうか? 開発環境はWinNT4とVB6です。よろしくお願いします。

  • VC7で作成したルーチンをC++Builderで使用するには?

    C++ Builder(Ver5)を使って簡単なGUIのアプリが作れるように勉強しています。 最近、あるHPでimplib.exeを使えばVC用のライブラリを取り込めることを知り、市販のライブラリで試したところ、容易に取り込むことが出来ました。 ここでご質問です。 今まで私がVC(Ver7)で作成したコンソールアプリケーションがあります。このときに作ったモジュール群をライブラリにして、BCBで使用したいのですが、VC側でどのように作ったら良いのかわかりません。 VC側でどのテンプレートを選んでどのように作ればBCBで使えるライブラリになるのか教えてください。 ※私はもともと組込み用のソフト開発者なので、Windowsアプリの知識はビギナークラスです。そんな私でも分かるように配慮してもらえると助かります。 以下に示すHPが私の参考にした方法です。 http://gimite.ddo.jp/bcbqtree/qtreemain.cgi?mode=thread&thread=366

  • VB.NETの不正?なレジストリ書き込みについて(WinXP)

    VB.NETで開発を行っているのですが、特にレジストリに書き込むような記述はしていないのに、何故か開発したEXEの情報?が以下のレジストリに書き込まれています。 このレジストリは一体何者なのでしょうか? またレジストリの内容を削除した場合にWinXPに影響はありますか? HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache

  • ネイティブコード開発言語

    お世話になります。 組み込み系のWindowsアプリを勉強の為に書いてみようと思っていますが、どんな開発言語を選択したらよいか、困っています。 以下のようなことがしたいのですが、何か良いものはありますでしょうか? ・Windowsベース ・PCIバス上のデータ、メモリ上のデータ等を高速に処理したい。 ・中間言語に落とす形式は起動時間や動作速度が推定しにくく避けたい ・GUIプログラミングもしたいし、デバイスドライバも書きたい

  • フリーのc言語統合開発環境ソフト

    フリーのc言語統合開発環境ソフト こちらのサイト ttp://9cguide.appspot.com/p_9cide.html でダウンロードしたファイル easyidec.exe をインストールしている途中にウイルス反応が出ました。 以下、キングソフトアンチウイルスのログです。 \Local Settings\Application Data\EasyIDEC\project\WindowsGUI\is-72CO1.tmpの Win32.Troj.DownloaderT.ul.25088 成功(操作:削除) 「インストール不要なZIP版」でも \EasyIDEC\project\WindowsGUI\windows.exeの Win32.Troj.DownloaderT.ul.25088 成功(操作:削除) このファイルは、ウインドウズに関る物なので、アンチウイルスが過剰反応しているのでしょうか? それとも、本当にウイルスが混在しているのでしょうか? 保安、情報共有の為、よろしくお願いします。

  • VC++のプロジェクト指定

    VC++でほぼ始めて”EXE”を開発するのですが、[新規作成]でどのプロジェクトを指定すればいいかわかりません。 つまり、「MFC AppWizard(exe)」と「Win32Application」と「Win32ConsoleApplication」の使い分けがわかりません。 ちなみに、現在、あるAPからCALLされるEXEを作ろうとしています。 このEXEの機能は、レジストリからある情報を読み込み、その内容をINIファイルに出力し、読み込んだレジストリ情報で指定されているEXEにパラメータとしてこのINIファイルを設定し、実行させるものです。 宜しくお願いします。

  • CE向け開発環境

    お世話になります。 WindowsXPで、開発したWinCE5.0向けソースを Windows2003SERVERの開発環境で開こうとすると、 「ユーザのデータストアから情報を取得中にエラーが発生しました。  XMLドキュメントには最上位の要素を指定する必要があります。」 「データストアに存在しないデバイスプラットフォームを参照している 為、プロジェクトは開けませんでした」 というメッセージがでて開けません。 開発環境詳細は、下記のとおりです。 VisualStudio 2005 VB .NET framework SDK 2.0 framework SDK 1.0 DB:SQLServer2005 開発環境のインストールは、XPと同様に入れなおしたのですが、 できません。 何か情報を知っている方がいたら教えて下さい! よろしくお願いします!!

  • シリアル受信の取りこぼし

    C++で作成したシリアルの受信処理について 1.受信イベントを検知 2.ReadFileでデータ読み取り 3.データ解析 の動作をスレッドの中で行うようにしているのですが 大量のデータを受け取る時に、データの取りこぼしが発生します。 取りこぼしを防ぐ処理方法や設定などはないでしょうか

  • 共有メモリへのマッピング(MapViewOfFile)について

    共有メモリについて(特にMapViewOffileについて)教えてください。 ある構造体と、あるデータAを共有メモリへマッピングしたい考えています。 構造体は、 typedef struct _Data { int length; long data; char mIntArrayData[256]; } Data; データAは、short型の配列(要素数はx*y*z,x,y,zはcsvファイル等から読み込む)で、サイズをdatasize = sizeof(short) * x * y * z;とします。 この2つを使って、 両方のデータを long AllDataSize = sizeof(Data) + datasizeとしました。 このサイズを使って、共有メモリのマップハンドルを hMap = CreateFileMapping(INVALID_HANDLE_VALUE, NULL,PAGE_READWRITE,AllDataSize,MAPPED_FILE_NAME); (MAPPED_FILE_NAMEは、 メモリマップドファイルの名前) で、生成しました。 生成はできたのですが、データAにアクセスするための下記のような時にマッピングに失敗してしまいました。 DWORD dwOffset = sizeof(DATA); short *pData = (short *)MapViewOfFile(hMap, FILE_MAP_WRITE, 0, dwOffset, Bytes); (Bytesはマッピングしたいバイト数でsizeof(short)の倍数) 次のようなDATAにアクセスするマッピングには成功しています。 DWORD dwOffset = 0; DATA *pDATA = (DATA *)MapViewOfFile(hMap, FILE_MAP_WRITE, 0, dwOffset, sizeof(DATA)); 色々なサイト等を調べて、考えてみたのですが、怪しいところはdwOffsetと、CreateFileMappingで、マッピングしたい全体のファイルサイズを、構造体とデータAのサイズの単純な足し算としているところと考えています。ただ、はっきりとした答えが全くわからないので、どうか御教授お願いします。