VBで構造体に値を詰め込んでVC++で記述された別プロセスのソフトにデータ投げ投げ。
Private Sub Command3_Click()
Dim p As DENBUNHDR_TBL
Dim q As YMDHMS_TBL
Dim r(36) As Byte
Dim m As String
Dim i As Integer
With p
.datasize = 8
.syubetu = 22
End With
With q
.year = &H2003
.mon = 3
.day = 11
.hour = 12
.min = 34
.sec = 56
End With
MsgBox Hex(VarPtr(r(1)))
Call CopyMemory(r(1), p, 28)
Call CopyMemory(r(29), q, 8)
For i = 1 To 36
m = m + Right("00" + Hex(r(i)), 2)
Next
MsgBox m
Call PostDenbun(VarPtr(r(1)), 8)
End Sub
VarPtr(Visual Basicの限界を広げるサブクラス化の手法)はまあ常道だけど、配列の先頭アドレス取るのにハマったり。フツー参照渡しなのでr(1)と先頭要素書けばいいのね。同様にr(29)と書けば28番目の要素のアドレス(コノ場合はDENBUNHDR_TBLの直後)を表現したり。DENBUNHDR_TBLの後ろにYMDHMS_TBLを貼り付けてメモリ上にまとめてからPostDenbunサブルーチンでWM_COPYDATA~
Posted by minemaz at 2003年12月21日 16:29