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

Re: WM_COPYDATAについて 投稿者:JP7CZE 川辺

> 今回の川辺さんのソースでは 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 の結果が取れるようになりました.

ほんとにありがとうございました.

2014/12/19(Fri) 00:27:43  [No.654]


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