Recent Entries
Archives
Search


Links
Powered by
Movable Type 2.64

2003年12月21日

VBでポインタ

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
トラックバック
このエントリーのトラックバックURL:
http://www.lancard.com/mt/mt-tb.cgi/80

Comments
Post a comment









Remember personal info?