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)

はじめまして

マネージメモリ配下なので
アンマネージメモリではない
よって

Public lpData As IntPtr->Public lpData As String

ついでに戻りにおいても

TextBox1.Text = Marshal.PtrToStringAnsi(cds.lpData)
なってましたが
TextBox1.Text = cds.lpData
になります

VBは10年以上触ってませんでしたが、Expressはどうなのか
興味があって動作させてみました
コメント文に手こずりますね VBは つい//としてしまう
最後;をつける癖が

おそらく動作すると思います
VB2010で動作確認してみました

と宣言下さい

2012/10/13(Sat) 20:09:11  [No.312]


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