WM_COPYDATAについて – プログラミング – Home

通知
すべてクリア

WM_COPYDATAについて


BOB
 BOB
(@BOB)
ゲスト
結合: 23年前
投稿: 16
Topic starter  

VC++6のMFCを使っています。
WM_COPYDATAを使ってプロセス間通信をしているのですが、
データがうまく渡りません。
WM_COPYDATAはどのようにしてプロセス間でデータの受け渡しをしているのでしょうか?


引用解決済
トピックタグ
kazuma
 kazuma
(@kazuma)
ゲスト
結合: 24年前
投稿: 217
 

> WM_COPYDATAを使ってプロセス間通信をしているのですが、
> データがうまく渡りません。

MSDNのWM_COPYDATAの説明に注意事項がいくつか載ってますがその辺は大丈夫でしょうか?

「An application must use the SendMessage function to send this message,
 not the PostMessage function.

 The data being passed must not contain pointers or other references to
 objects not accessible to the application receiving the data. 」

後は、送り先のウィンドウハンドルがうまく取得できていないとか。


返信引用
BOB
 BOB
(@BOB)
ゲスト
結合: 23年前
投稿: 16
Topic starter  

相手のONCOPY関数にたどり着いているので、ハンドルもあっていると思います。
構造体でデータを渡しているのですが、それがおかしいみたいです。
あまり英語が得意ではありませんが、送ったデータは、相手が拾うまでアクセスしてはだめとい
うことでしょうか?
ポインタがおかしくなっている感じなのです。
データを投げる前はもちろん構造体の中身が正常なのを確認しています。
構造体の中身を変更しつつ、ループして何回もSendMessageしているのですが、そこでおかしく
なってしまっているのでしょうか?


返信引用
kazuma
 kazuma
(@kazuma)
ゲスト
結合: 24年前
投稿: 217
 

> 構造体でデータを渡しているのですが、それがおかしいみたいです。
> ポインタがおかしくなっている感じなのです。

構造体のメンバにポインタが含まれているとだめです。
(さっき書いた英文にはそんなようなことが書いてあります。)

過去ログにも同じような話がいくつかありますね。
WM_COPYDATAで検索してみてください。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

ポインタが含まれていると駄目な理由がわかれば、
自ずと理解できると思うのですが。

ウインドウズのメモリ管理に関することなのでプロセス間通信を
行っているのであれば、当然抑えておかないといけない内容ですよ。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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