> 今回の川辺さんのソースでは lpData As String * 3927 となっていた
> lpData As String に変えたらTHWから取れましたので。
私が定義していたのが,
Type COPYDATASTRUCT
dwData As Long
cbData As Long
lpData As String * 3927 ' void * のつもり
End Type
です(コメントは悪銭苦闘の残骸ですね...Hamadaさんのオリジナルの消し忘れ).
あちこちのページを参考に,色々弄くってみて,
期待する結果が出るように,力ずくで弄くり倒した結果,
なんとかちゃんと結果は得られたか,と思っていたのですが,
Hamadaさんからダメだしをくらいまして(^^;
Dim cds As COPYDATASTRUCT
Call CopyMemory(cds, ByVal lParam, Len(cds))
で取得していたのですが,問題は cds.lpDataの中身.
THWからはcbDataの長さの文字列が帰ってきて最後はOx00が入ってくることはわかっていたのですが,うまく取れないので,戻り値をダンプしてみたら,14バイトの最後が0で終わるデータが本来のlpDataの前にくっついていることがわかりました.
その後は,VBの場合,文字列がunicode で2byteですが,(cbData-1)+1 で切り出してもなぜかうまく取り出せませんでした???
なので強引に先頭の14byteを除去して,0x00までを取得するようにしたわけです.
変数等の内部構造も何も知らずに,Web上の先人たちの情報と結果だけを頼りに弄くっているだけなので....
それでも,みなさんのおかげで,正しくWM_COPYDATA の結果が取れるようになりました.
ほんとにありがとうございました.