HAMLOG開発室は、HAMLOGに関連したプログラム開発(C、パスカル、VB言語等、又はDLL)についての
専用BBSです。プログラム言語に関する投稿以外は通常のHAMLOG相談室に投稿して下さい。
HAMLOG開発室BBS

Re: sendmessageで受信できず 投稿者:JP7CZE 川辺

SendMessage の戻り値が,大きい数が入っているので,Hamlog の方では,正しく送出しているということで,

最初は SendMessage の cdsに戻り値が入っているのかと思っていましたが,どうやらそうではななさそう,

ということで,
OnWndMsg(......,lParam as long)

のところの分岐で,Case WM_COPYDATA を書いてチェックしたところ,
SendMessage のコマンドの直後に,この分岐にちゃんと飛んできていることがわかりました.

で,問題は,lParam をとうやってcdsのアドレスとして入れ込んで,cdsのデータを取り込むか...
太田さんのVB2008のサンプルを見ても,今一理解出来ず.Declear の部分をちゃんと見てませんでした.

そんなことで,この間,ZAChkのプログラムに関して,浜田さんとやり取りしている中で,相談したところ,
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)

を教えてもらい,一発で解決できました.

Public Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long

の中で,
Select Case uMsg
Case WM_COPYDATA
Dim cds As COPYDATASTRUCT
Dim buf(1 To 255) As Byte
Call CopyMemory(cds, ByVal lParam, Len(cds))

で,cdsの中身(cds.lpData)を取り出すことが出来ました.

みなさんのおかげで無事解決でき,ありがとうございました.

2014/11/17(Mon) 23:13:00  [No.621]


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)
- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)
Call 名前 ※必須
文字色
Eメール
タイトル sage
URL
メッセージ 手動改行 強制改行 図表モード
メッセージには上記と同じURLを書き込まないで下さい
画像File  (130kBまで)
暗証キー (英数字で8文字以内)
投稿キー (投稿時 投稿キー を入力してください)
プレビュー