1

2 つの Windows スタンドアロン GUI アプリケーションがあるとします。最初の GUI でコマンド ボタンを押すたびに、他の GUI がボタンのステータスを取得し、その中のテキスト ボックスに ON または OFF を表示する必要があります。共有メモリを使用してこれを行うにはどうすればよいですか。

PS: VC++ 2008 を使用しています。

4

1 に答える 1

5

見てみましょう: http://msdn.microsoft.com/en-us/library/windows/desktop/aa366551%28v=vs.85%29.aspx

プロセス 1 で:

CreateFileMapping(): 共有メモリ ブロックがまだ存在しない場合は、最後のパラメーターで指定された名前で共有メモリ ブロックを作成し、成功した場合はハンドル (ポインターと呼ぶこともできます) を返します。

MapViewOfFile(): この共有ブロックをプロセス アドレス空間にマップ (インクルード) し、ハンドルを返します (ここでもポインタと言えます)。

MapViewOfFile() によって返されるこのポインターを使用すると、その共有ブロックにアクセスできます。

プロセス 2 で:

OpenFileMapping(): CreateFileMapping() によって共有メモリ ブロックが正常に作成された場合は、同じ名前 (共有メモリ ブロックの作成に使用された名前) で使用できます。

UnmapViewOfFile(): マップを解除します (そのプロセス アドレス空間から共有メモリ ブロックを削除できます)。共有メモリの使用 (アクセス、変更など) が終了したら、この関数を呼び出します。

Closehandle(): 最後にプロセスから共有メモリ ブロックをデタッチするには、引数、OpenFileMapping() または CreateFileMapping() によって返されるハンドルを指定してこれを呼び出します。

于 2013-03-17T13:53:09.160 に答える