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

Re: VB2010 Th521api cmmd = 119 投稿者:JJ8LSI 水本

> お世話になります。
> 先程の「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へ書き込む時はコード変換しています

2012/10/13(Sat) 20:24:34  [No.313]


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