> お世話になります。
> 先程の「Th521APIアップしました 」で上手く動作した cmmd = 119 は
> VB6 でのコードでした。
>
> VB2010で URL のページの「ソース1 2009.08.17 getHamlog」にコードを追加して
> 試しています。
> cmmd = 118 は上手く動作しましたが cmmd = 119 が上手く行きません。
>
> cds.cbData と cds.lpData のセットの仕方がVB6とVB2010では
> 異なるからなのかも知れませんが、どなたかご指導いただければ幸いです。
>
> http://ja2bqx.web.fc2.com/VbNet/VbNet.html
>
> ( 注 ) URLがERRORになるために一部全角にしてありますが実際には全て半角です。
>
>
> ------ 一部抜粋 -----
>
> Dim cds As COPYDATASTRUCT
> Private Const WM_COPYDATA = &H4A
> <VBFixedString(256)> Dim cbuff As String
>
>
>
> ' Th521api で追加されたコマンド
> ' 119 = lpDataにレコード番号の文字列へのポインタを渡すと、そのレコード番号の
> ' データの、コールサインからRemarks2までが、それぞれ改行されたテキス
> ' トとして得ることができる。指定レコード番号が範囲外の場合は、最終レ
> ' コード番号のデータ。(v5.20b)
>
> cmmd = 119
> cds.dwData = cmmd
>
> 'cds.cbData = 0
>
> 'cds.cbData = 0 だと最終レコードを表示する。 他では表示されない??
>
> cbuff = "32959" '指定レコード番号
>
> cds.cbData = Microsoft.VisualBasic.Strings.Len(cbuff) ' 文字列の長さ
>
> cds.lpData = cbuff
>
> Hwnd2 = SendMessage(Hwnd1, WM_COPYDATA, Me.Handle, cds)
ついでに
stringはUnicodeなんでわざわざ文字列変換してC#で動作しませんでした
変換せずに送ると受け取るみたいでした
VC++6.0でSendMesageを受けてみたらAPIの方で変換しているような動きでした あまり詳しく調べてないので返答には困りますが
VC++2010ではUTF-16で処理しています
読むには気になりませんね HAMLOGでSJISですが内部でコード変換しているようです HAMLOGへ書き込む時はコード変換しています