HAMLOG プログラム開発室


新着表示
タイトル
記事No
投稿日
投稿者

Re: 修正ウィンドウとのやり取りの件
629
2014/12/08(Mon) 15:56:34
JA2BQX 太田
こんにちは。
編集ウインドウに対する操作は今まで必要では無かったのでやったことがありませんでしたが、
ここの書き込みを見てVB2010で簡単な編集ウインドウへの書き込みテストをしています。

> これで 動きますね。15のみならず他のものも。しかし DXCQ12 等のチェックボックスは???です。DXのみなんと入力ウィンドウが反応していますが。

下記でON,OFF出来ます。

・ Re: CQ 1 2 のチェックボック.. - JG1MOU浜田 09/19-21:27 No.569
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: 修正ウィンドウとのやり取りの件
628
2014/12/08(Mon) 12:54:36
JA9AOB 銅子
> > これだけでも動くみたいです。
> > command = 15 | THW_SHUUSEIWIN4;
>
これで 動きますね。15のみならず他のものも。しかし DXCQ12 等のチェックボックスは???です。DXのみなんと入力ウィンドウが反応していますが。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: 修正ウィンドウとのやり取りの件
627
2014/12/07(Sun) 20:17:54
JA9AOB 銅子
> #define THW_FOCUS 0x20000
> $define THW_SHUUSEIWIN4 0x400000
>
> 道の駅Get'sでは、次のとおり送ってます。
> ただし、あらかじめ表示&修正ウインドウをアクティブにしておく必要があります。
> command = 15 | THW_SHUUSEIWIN4 | THW_FOCUS;
>
> これだけでも動くみたいです。
> command = 15 | THW_SHUUSEIWIN4;

早速有難うございます。やってみます。だけどやはり
> ただし、あらかじめ表示&修正ウインドウをアクティブにしておく
これが条件ですか。これを前提に何か対策を考えます。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: 修正ウィンドウとのやり取りの件
626
2014/12/07(Sun) 12:23:51
JG1MOU浜田
> 15で編集ウィンドウにもデータが送れるのですか。説明を読み返しましたが、よくわかりませんでした。ぜひ教えてて下さい。

#define THW_FOCUS 0x20000
$define THW_SHUUSEIWIN4 0x400000

道の駅Get'sでは、次のとおり送ってます。
ただし、あらかじめ表示&修正ウインドウをアクティブにしておく必要があります。
command = 15 | THW_SHUUSEIWIN4 | THW_FOCUS;

これだけでも動くみたいです。
command = 15 | THW_SHUUSEIWIN4;
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: 修正ウィンドウとのやり取りの件
625
2014/12/05(Fri) 21:15:41
JA9AOB 銅子
> > ●コマンドを数値で指定し、Turbo HAMLOG/Winの入力ウインドウに文字列を送る。 の
> > 21 = 修正ウインドウにデータを送ります。15番と同じ。
> > を使って、編集画面に送っています。
>
> 道の駅Get'sでは、15を送ってます。
> 21では、確かに2回以上コマンドを送ると違うレコード番号のデータに
> 変わってしまいますね。
> なぜかよくわかりません。
15で編集ウィンドウにもデータが送れるのですか。説明を読み返しましたが、よくわかりませんでした。ぜひ教えてて下さい。
21以外では出来ないと思って、21で送るときの条件をテストしていました。結果分かったことは
2回目で変化するデータは
JCC/G(Code)順・入力順で並べたデータで次のCodeの先頭データが(100101なら100102のもっとも古いデータが)読み込まれています。この読み込むデータも、編集ウィンドーで空の項目だけ追加で読み込んでいます。
他に方法があれば無理に使うこともないのでぜひ教えてください。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: 修正ウィンドウとのやり取りの件
624
2014/12/04(Thu) 21:53:20
JG1MOU浜田
> ●コマンドを数値で指定し、Turbo HAMLOG/Winの入力ウインドウに文字列を送る。 の
> 21 = 修正ウインドウにデータを送ります。15番と同じ。
> を使って、編集画面に送っています。

道の駅Get'sでは、15を送ってます。
21では、確かに2回以上コマンドを送ると違うレコード番号のデータに
変わってしまいますね。
なぜかよくわかりません。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

修正ウィンドウとのやり取りの件
623
2014/12/03(Wed) 19:08:23
JA9AOB 銅子
浜田さん 色々有難うございます。確かに、道の駅等のデータを編集ウィンドウに何回送っても、問題ないですね。
私は
HamlogMs の説明にある 
修正ウインドウからデータの取得は 
 115 = コールサインからRemarks2までが、それぞれ改行されたテキストとして得ることができる。1行目は空改行。
THW_SHUUSEIWIN4 = $400000; 修正ウインドウから取り込む(v5.09a)
で取り込んでいます。これを編集して、
●コマンドを数値で指定し、Turbo HAMLOG/Winの入力ウインドウに文字列を送る。 の
21 = 修正ウインドウにデータを送ります。15番と同じ。
を使って、編集画面に送っています。

やりかたはこれでいいのですよね。
となると、送るデータのフォマットがおかしいのか、他に致命傷を起こすバグがあるのか。さてさて困ってしまいました。簡単なものを別に作ってテストしてみます。有難うございました。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: ZAアワード用集計・編集プログラム(ZAChk)
622
2014/11/24(Mon) 01:28:02
JP7CZE 川辺
ようやく Hamlog との連携が出来るようになりました.

QSOデータもHamlogから起動時に読み込み,あとで更新もできます.
また,検索機能も,QTHが変化したら自動検索するようにしました.
0.5秒のポーリングをしています.

フックをかけているので,エラーがある場合とか,プログラム的に予想通りの結果になっていない時にストップをかけてチェックしたい時などで止めると,VB6ごと落とさないとだめなので,Hamlogとのやり取りの部分はちょっと大変でした.
この辺は,VB2008以上ではどうなんでしょうか.
太田さんのソースを見てても,VB6からの移行は,結構敷居が高そうだと...

ということで,ZAChk1.4.0をアップしました.
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: sendmessageで受信できず
621
2014/11/17(Mon) 23:13:00
JP7CZE 川辺
SendMessage の戻り値が,大きい数が入っているので,Hamlog の方では,正しく送出しているということで,

最初は SendMessage の cdsに戻り値が入っているのかと思っていましたが,どうやらそうではななさそう,

ということで,
OnWndMsg(......,lParam as long)

のところの分岐で,Case WM_COPYDATA を書いてチェックしたところ,
SendMessage のコマンドの直後に,この分岐にちゃんと飛んできていることがわかりました.

で,問題は,lParam をとうやってcdsのアドレスとして入れ込んで,cdsのデータを取り込むか...
太田さんのVB2008のサンプルを見ても,今一理解出来ず.Declear の部分をちゃんと見てませんでした.

そんなことで,この間,ZAChkのプログラムに関して,浜田さんとやり取りしている中で,相談したところ,
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)

を教えてもらい,一発で解決できました.

Public Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long

の中で,
Select Case uMsg
Case WM_COPYDATA
Dim cds As COPYDATASTRUCT
Dim buf(1 To 255) As Byte
Call CopyMemory(cds, ByVal lParam, Len(cds))

で,cdsの中身(cds.lpData)を取り出すことが出来ました.

みなさんのおかげで無事解決でき,ありがとうございました.
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: WM_COPYDATA
620
2014/11/17(Mon) 20:47:15
JA2BQX 太田

こんばんは。
ありがとうございます。

> 現時点ではちょっと気乗りしません。

いずれ、またの機会にでもご検討下されば幸いです。

> SetWindowText()がタイトルバーを書き換えてやるとか。。。

これは思いつきませんでした。 調べて試してみます。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop