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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
1204
トマトプロセス間通信について4解決


トマト

リンク

2010/12/4(Sat) 17:36:32|NO.36120

HSP歴2年半の初心者です。
プロセス間通信について教えて頂きたいのですが・・・。

2つのHSP製アプリ間でデータのやり取りをしたいのですが・・・
当初はレジストリを使ったりdatファイルを作成してnoteloadでデータのやり取りをしていましたが、定期的にレジストリやdatファイルを読み取るのではパフォーマンスが低下してしまう気がしてもっと効率良く、オンデマンドでやり取りする方法として、
http://yokohama.cool.ne.jp/chokuto/advanced/copydata.html
を見つけましたが、イマイチ意味が分からなくて使えません。

具体的には入力ボックスである送信アプリに入力した文字(50文字程度)を受信アプリ("HSP TestApp for SendMessage")に送信して表示させたいのです。
1対1の通信でブロードキャスト通信ではない方法のサンプルを知りたいのですが・・・。宜しくお願い致しますm(_ _)m。

; == サンプル:受信側 == #define WM_USER 0x0400 #define MYWM_TEST (WM_USER+0x0101) ; タイトル文字列を固有のものに変える title "HSP TestApp for SendMessage" oncmd gosub *OnReceive, MYWM_TEST stop *OnReceive mes "メッセージを受け取りました" return ; == サンプル:送信側 == #include "user32.as" #define WM_USER 0x0400 #define MYWM_TEST (WM_USER+0x0101) ; 固有のタイトル文字列を検索 FindWindow "hspwnd0", "HSP TestApp for SendMessage" hTarget = stat if hTarget == 0 { dialog "ウィンドウが見つかりません",1,"エラー" end } sendmsg hTarget, MYWM_TEST, 0, 0 mes "メッセージを送信しました"



この記事に返信する


info

リンク

2010/12/4(Sat) 19:54:26|NO.36121

mesbox のテキストを送受信したいのなら、WM_GETTEXT を使用すれば出来ますよ。

;--------------------------------------- ; == サンプル:送信側 == #include "user32.as" #define WM_USER 0x0400 #define MYWM_TEST (WM_USER+0x0101) #enum MID_SNDMSG = 1 objsize ginfo_winx , 20 button gosub "送信" , *label_button txt_mesbox = "ぼたんをおしてね" mesbox txt_mesbox , ginfo_winx , ginfo_winy-20 hMesbox = objinfo_hwnd(stat) , stat gsel 0,2 stop *label_button FindWindow "hspwnd0", "HSP TestApp for SendMessage" hTarget = stat if hTarget == 0 { dialog "ウィンドウが見つかりません",1,"エラー" return } sendmsg hTarget, MYWM_TEST, hMesbox, hMesbox mes "メッセージを送信しました" return ;--------------------------------------- ; == サンプル:受信側 == #include "user32.as" #define WM_USER 0x0400 #define MYWM_TEST (WM_USER+0x0101) ; タイトル文字列を固有のものに変える title "HSP TestApp for SendMessage" oncmd gosub *OnReceive, MYWM_TEST gsel 0,2 stop #define WM_GETTEXT $0000000D #define WM_GETTEXTLENGTH $0000000E *OnReceive cls mes "受信" sendmsg lparam , WM_GETTEXTLENGTH slen = stat+1 mes "サイズ = "+(slen-1) sdim WndTxt_Parent , slen sendmsg lparam , WM_GETTEXT , slen , varptr(WndTxt_Parent) mes mes "["+WndTxt_Parent+"]" return



トマト

リンク

2010/12/5(Sun) 00:31:28|NO.36123

回答ありがとうございます。
早速実行してみましたが送信側の方でエラーになってしました。
(#Error 6 in line 18 -->パラメータの型が違います)
FindWindow関数の使い方が分かりません。

FindWindow "hspwnd0", "HSP TestApp for SendMessage"の部分なのですが・・・。

頭が悪くてごめんなさい (ρ_;)・・・・ぐすん。



ANTARES

リンク

2010/12/5(Sun) 12:23:16|NO.36125

>FindWindow関数の使い方が分かりません。
これは
FindWindow 0, "HSP TestApp for SendMessage"
でいいはずですが、
私の環境では直さなくてもエラーは起きません。

WinXP Pro 32ビット
HSP3.21



トマト

リンク

2010/12/5(Sun) 13:14:24|NO.36129

WinXP Pro 32ビット (CPU Celeron 2.8GHz)
HSP3.2 及び
Win7 Ultimate 32ビット(CPU N270 1.6GHz+1.6GHz)
HSP3.2
で実行したら出来ました!
ありがとうございます。

因みにエラーになった環境は
Win7 Ultimate 32ビット(メインPC;Pentium D 3.2GHz+3.2GHz)
HSP3.22 及び HSP3.21でした。
infoさまのスクリプトもきちんと動作しました。
環境を変えて試してみる事も大切だったのですね。
本当にありがとうございます。
<(_ _)>



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