HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0315
(´ω`)sendmsgによるアプリ間の文字列の送受信4解決


(´ω`)

リンク

2012/3/15(Thu) 16:38:22|NO.45426

タイトルだけで質問内容は終わっちゃってますが。(u´ω`)

sendmsgによるアプリ間の文字列の送受信というのは、どうすればよろしいでしょうか。
もしくは、sendmsgではできないのでしょうか。
さらに言うと、sendmsgに対する戻り値として文字列を返すことはできるのでしょうか。

また、メッセージ送信側に処理完了を待ってもらいたいのと、いろんなアプリで汎用的に
使えるものにしたいのでsendmsgでと考えましたが、それに類する別の手法がありましたら
ご教示いただければ。

よろしくお願いいたします。



この記事に返信する


 

リンク

2012/3/15(Thu) 18:45:08|NO.45427

ヒント:共有メモリ



gai

リンク

2012/3/15(Thu) 19:41:06|NO.45429

一般的にメッセージを使ったデータの送信はWM_COPYDATAを使いますが、テキストデータの送信だけならWM_SETTEXTでいいと思います。
普通このメッセージはタイトルバーの文字列を変更したりするために送りますが、アプリが独自にテキストを処理するためにも使えます。
メッセージの戻り値で文字列を返すことができるかは知りませんがたぶん無理だと思います。



(´ω`)

リンク

2012/3/16(Fri) 17:47:21|NO.45442

"WM_COPYDATA"という便利なのがあるのですね。
知らなかった……

というわけで、猛烈にググりまくって勉強している最中です。
なんとか希望のものができそうです。ありがとうございました!(*´ω`*)



(´ω`)

リンク

2012/3/17(Sat) 10:54:36|NO.45453

おかげさまでできました。感謝感激です。
以降に続く方々のために、簡単なソースを残しておきます。

■メッセージ送信側

#uselib "USER32.DLL" #define global FindWindow FindWindowA #func global FindWindowA "FindWindowA" sptr,sptr FindWindow "hspwnd0", [受信ウィンドウタイトル] hdlGetmsg = stat msg = [送信メッセージ] msize = strlen(msg) mid = 0 dim cds, 3 cds(0) = mid cds(1) = msize cds(2) = varptr(msg) sendmsg hdlGetmsg, 0x004a, hwnd, varptr(cds) mes stat stop

■受信側

screen 0, 200, 100, 0 title [受信ウィンドウタイトル] oncmd gosub *getmessage, 0x004a stop *getmessage dupptr cds, lparam, 12 mid = cds(0) msize = cds(1) dupptr mrecv, cds(2), msize sdim msg, msize memcpy msg, mrecv, msize dialog msg return

[受信ウィンドウタイトル]には任意のウィンドウタイトルを当てはめてください。
[送信メッセージ]には任意のテキストを。
受信側を実行しておいて送信側を実行すれば、送信メッセージがダイアログで
表示されます。(´ω`)



ONION software Copyright 1997-2023(c) All rights reserved.