Back
一括表示
タイトル
記事No
投稿日
投稿者
: Upload Logs Directly Into Club Log
: 891
: 2020/04/02(Thu) 19:19:39
: JA2BQX 太田
またまた、問い合わせですが、どなたか Hamlog でのQSOデータを リアルタイムでClubLogにアップロードするソフトを作成された方はありませんか? ClubLog の HELP にある [ How To Upload Logs Directly Into Club Log ] です。 今回もVB2010で作成中です。 eQSL.cc と HRDLOGnet への リアルタイムでアップロードは出来ています。
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: Upload Logs Directly Into Club Log
: 892
: 2020/04/04(Sat) 08:15:15
: JA9AOB 銅子
> またまた、問い合わせですが、どなたか Hamlog でのQSOデータを > リアルタイムでClubLogにアップロードするソフトを作成された方はありませんか? > > ClubLog の HELP にある [ How To Upload Logs Directly Into Club Log ] です。 頑張っていますね。私も、ClubLog にと思っていましたがまだ実施していません。ADIFで多数のデータをアップロードするのと リアルタイムで1件毎に行う場合は異なった方法でと成っていますね。 リアルタイム用のFormの例が出ていますので、eQSL で行ったように POST すればよろしいのではないでしょうか。とは言いましても、私はeQSL LoTW でアップロードしていますが、ADIFファイルのアップロードなのでチョッと違う構成に成りそうです。 ファイルの場合はファイルデータを読み込んで、バイトデータに変換して送っているので、これに準じた方法で行けるとは思うのですが。とにかくやってみましょう。 追加:APIキー を取得しなければいけない様です --- 気後れしてしまいますね
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: Upload Logs Directly Into Club Log
: 893
: 2020/04/04(Sat) 09:15:33
: JA2BQX 太田
こんにちは。 ありがとうございます。ご呈示のhtmlにデータを書き込みでやってみましたが 自動でのファイルパスの書き込みは禁止されているとかでNGでした。 JA1NLX 吉田さんに助け舟をお願いしてサンプルソースを見せてもらいました。 adifのファイル転送で四苦八苦していましたがadifデータを "adif=" にてPOSTすればOKでした。
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: Upload Logs Directly Into Club Log
: 894
: 2020/04/04(Sat) 09:36:32
: JA9AOB 銅子
> こんにちは。 > ありがとうございます。ご呈示のhtmlにデータを書き込みでやってみましたが > 自動でのファイルパスの書き込みは禁止されているとかでNGでした。 > > JA1NLX 吉田さんに助け舟をお願いしてサンプルソースを見せてもらいました。 > adifのファイル転送で四苦八苦していましたがadifデータを > "adif=" にてPOSTすればOKでした。 了解です。LoTWも何とかと思ったのですが、認証の件で無理でした。 結局 eQSL のみ即時アップロード他は適宜手動でアップロードで賄っています。 ではまた!!。
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: Upload Logs Directly Into Club Log
: 895
: 2020/04/04(Sat) 10:24:15
: JA2BQX 太田
ありがとうございます。 まだ宿題が残っていまして...。 JTDXのソースを修正して sendmaessage() でHamlogへ転送時の JTDXのウインドウ・ハンドルが取れていません。 言語はQtなのでサンプルも少なくて。 C++のコードとは違いがあるのかも....。
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: Upload Logs Directly Into Club Log
: 896
: 2020/04/04(Sat) 20:50:55
: JA9AOB 銅子
> ありがとうございます。 > > まだ宿題が残っていまして...。 > JTDXのソースを修正して sendmaessage() でHamlogへ転送時の > JTDXのウインドウ・ハンドルが取れていません。 > 言語はQtなのでサンプルも少なくて。 > C++のコードとは違いがあるのかも....。 WinApi を使って得ます FindWindowEx() が使えると思います。ご存じの事と思いますが、JTDX WSJT-X共にClassNameが"Qt5QWindowIcon"と成っています(spay++で調べた結果)。FindWindowExは一連のOpen中のWinが順次得られますので、どのWinか判定するには captionと申しましょうか、Winに表示されている文字で判定するしかないと思います。 hWnd を得るためでなく動いている Verを調べるために作った例を提示します C# 対応です IntPtr hWnd が該当Winハンドルです // WSJTX JTDX が起動されているかチェックしてそのCaptionを得る private IntPtr hWndJtdx = (IntPtr)0; public string GetWsjtxOrJtdxCaption() { string sCaptionVer1_8_0 = "WSJT-X v1."; // 1 ソフトのキャプション Ver 1.8.0-rc2 3 では稼働確認 Ver 1.9.0-rc3 string sCaptionVer1_8_1 = "JTDX v18.1"; // 2 JTDX のMein確認 string sCaptionVerJTDX = "JTDX by HF community"; // 3 JTDX Ver 18.1.0.59 string sCaptionVer2_0 = "WSJT-X v2.0"; // 4 WSJT-X Ver 2.0.0 string sCaptionVer2_1 = "WSJT-X v2.1"; // 5 WSJT-X Ver 2.1.0以降 // IntPtr hwndParent = (IntPtr)null; IntPtr hwndChildAfter = (IntPtr)null ; string className = "Qt5QWindowIcon"; string windowName = (string)null; StringBuilder title = new StringBuilder(1048); do { IntPtr hWnd = Win32Apis.NativeMethods.FindWindowEx(hwndParent, hwndChildAfter, className, windowName); hWndJtdx = hWnd; if (hWnd == (IntPtr)0) { JtVer = 0; return ""; } string passnae = GetExeFileName(hWnd); Win32Apis.NativeMethods.GetWindowText(hWnd, title, 1024); int titlelen = title.ToString().Length; string cp = ""; if (titlelen >= sCaptionVer1_8_0.Length) { cp = title.ToString().Substring(0, sCaptionVer1_8_0.Length); if (sCaptionVer1_8_0.CompareTo(cp) == 0) { JtVer = 1; break; } } if (titlelen >= sCaptionVer1_8_1.Length) { cp = title.ToString().Substring(0, sCaptionVer1_8_1.Length); if (sCaptionVer1_8_1.CompareTo(cp) == 0) { JtVer = 2; break; } } if (titlelen >= sCaptionVerJTDX.Length) { cp = title.ToString().Substring(0, sCaptionVerJTDX.Length); if (sCaptionVerJTDX.CompareTo(cp) == 0) { JtVer = 3; break; } } // sCaptionVer2_0 if (titlelen >= sCaptionVer2_0.Length) { cp = title.ToString().Substring(0, sCaptionVer2_0.Length); if (sCaptionVer2_0.CompareTo(cp) == 0) { JtVer = 4; break; } } // Ver2.1 if (titlelen >= sCaptionVer2_1.Length) { cp = title.ToString().Substring(0, sCaptionVer2_1.Length); if (sCaptionVer2_1.CompareTo(cp) == 0) { JtVer = 5; break; } } hwndChildAfter = hWnd; } while (true); return title.ToString(); } ///// public class Win32Apis { internal static class NativeMethods { // --------------------------------------------------------------------------------- [DllImport("User32.dll", BestFitMapping = false, ThrowOnUnmappableChar = true )] internal static extern IntPtr FindWindowEx ( IntPtr hwndParent, IntPtr hwndChildAfter, [MarshalAs(UnmanagedType.LPStr)] string className, [MarshalAs(UnmanagedType.LPStr)] string windowName); [DllImport("user32.dll", BestFitMapping = false, ThrowOnUnmappableChar = true)] internal static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int length); } }
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: Upload Logs Directly Into Club Log
: 897
: 2020/04/05(Sun) 06:10:57
: JA2BQX 太田
JA9AOB 銅子さん、 ソースコードを提示して頂きありがとうございます。 現在、拙作の digi2thw に ClubLog , HRDLOGnet への自動転送を組み込んでいます。 そちらがまもなく終わるので、その後で取り組ませて頂きます。
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
参照先
:
Re: Upload Logs Directly Into Club Log
:
898
:
2020/04/05(Sun) 10:29:47
:
JA2BQX 太田
:
ありがとうございます。
以前にWeb上の情報で下記の様なコードを試していました。
http://www.atmarkit.co.jp/fdotnet/dotnettips/224controls/controls.html 改めて試したらこれで JTDX のメインウインドウと LogQSO ウインドウの HWND が取れました。
JTDXの Qt 言語上で自分自身の HWND を取得する関数を見つけられなければ VB.net や C# のコードをQt用に書き換えが必要になりますね。
これもまた大変で...。 時間を掛けて努力はしてみます。
VB.net の自作ソフトでハンドルを取得しファイルに書き出して、それをJTDX側で読み込む手法も無くは無いですが。
JTDXの Qt で他アプリの起動、終了が出来る様になれば可能性もありますが。
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: Upload Logs Directly Into Club Log
: 899
: 2020/04/05(Sun) 16:29:30
: JA9AOB 銅子
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: Upload Logs Directly Into Club Log
: 900
: 2020/04/05(Sun) 18:12:46
: JA2BQX 太田
ありがとうございます。> あ、すみません 自分自身のWin ハンドルを取得するのですか。稼働しているWSJT-Xのハンドルかと思いました。 はい、JTDXの中で [ Log QSO ] ウインドウが表示されたら自分自身 [ Log QSO ] ウインドウのハンドルを取得したいのです。 銅子さんのC#のソースをQtの中に書いて取得も出来るのでしょうけど長くて途中でミスでエラーを出しそうです。 関数で取得出来るのではと検索していますが有っても書き方が悪いのかエラーばかりで。 JTDXの開発チームに聞いても多忙らしく返事がありません。 JTDXのMLで広く問い合わせをしなければ答えは得られないかも。
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: Upload Logs Directly Into Club Log
: 901
: 2020/04/05(Sun) 21:21:42
: JG1MOU浜田
ちょっと関連して・・・ Windows10 64bitになってから、FindWindow() の動作で悩んでいます。 WM_COPYDATAの動作がおかしいのかも知れません。 HAMLOGのヘルプメニューから道の駅Get'sを立ち上げると、正常です。 道の駅Get'sで集計する際、HAMLOGにメッセージを送ってHAMLOG側は ファイルをすべて閉じます。 そのすきに、道の駅Get'sではQSOデータを開いて集計しています。 集計が終わると、道の駅Get'sからHAMLOGにメッセージを送って HAMLOG側はファイルをすべて開きます。 これが、HAMLOGと道の駅Get'sを別々に立ち上げるとうまくいきません。 Windows7の頃は大丈夫だったような気がするのですが・・・。
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
参照先
:
Re: Upload Logs Directly Into Club Log
:
902
:
2020/04/05(Sun) 21:36:39
:
JA2BQX 太田
:
浜田さん、こんばんは。 書き込みありがとうございます。 Win10 64Bit だと何かと違うのでしょうか。 まだまだ、当分は解決しそうにありません。
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: Upload Logs Directly Into Club Log
: 911
: 2020/04/14(Tue) 20:14:48
: JG1MOU浜田
> Win10 64Bit だと何かと違うのでしょうか。 WM_COPYDATAですが、Windows-Vistaから仕様が変わっていたようです。 HAMLOGを管理者権限、道の駅Get'sをユーザー権限で同時に動作させた 場合、WM_COPYDATAによるプロセス間通信ができない、ということが 判明しました。 権限が逆の場合や、双方がユーザー権限、あるいは双方が管理者権限 の場合は動作しました。 また、HAMLOGのヘルプメニューに道の駅Get'sを登録しておき、起動 させると、これらにかかわらずWM_COPYDATAは動作します。 そのため、HAMLOG起動時に ChangeWindowMessageFilter(WM_COPYDATA, 1); を実行させてみたところ、すべて解消されました。 先ほど修正版をアップしました。 なお、このAPIはWindows-Vistaから実装された関数ですので、 Windows-XPでもHAMLOGが動作するよう、動的にインポートしました。 LoadLibrary() とGetProcAddress() です。
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
参照先
:
Hamlog 最新版
:
912
:
2020/04/15(Wed) 08:09:53
:
JA2BQX 太田
:
浜田さん、色々とありがとうございます。 Hamlog は最新版に入れ替えました。
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: Upload Logs Directly Into Club Log
: 903
: 2020/04/06(Mon) 10:01:57
: JA9AOB 銅子
> はい、JTDXの中で [ Log QSO ] ウインドウが表示されたら自分自身 [ Log QSO ] ウインドウのハンドルを取得したいのです。 > 私はVC++なのでマイクロソフトのMFC対応ウィンドウであれば 簡単ですが 異なるのでお役に立てませんね。 VC++ 付属のspy++ でもJTDXのウィンドウはトップレベルのウィンドウの情報しか得られません。 どうしてでもと言う事であれば、Win Apiを駆使して検索するより手が無いようにも思えます。 HWND hWnd = 0; while (hWnd = FindWindowEx(hDlg, hWnd, _TEXT("Button"), NULL)) { TCHAR title[128]; TCHAR className[128]; GetWindowText(hWnd, title, sizeof(title) / sizeof(TCHAR));//ウインドウの文字を取得して、 GetClassName(hWnd, className, sizeof(className) / sizeof(TCHAR)); _ftprintf(fp, _TEXT("\"%s\" \"%s\" %0.8x\n"), title, className, (DWORD)hWnd);} の様な例もあります。 内容的には、ウィンドウのテキストを順次表示するだけですが、FindWindowEx の初期設定を 前回のC#の様にすれば、JTDXの各ウィンドウが得られるはずですが。 これで目的のウィンドウが見つける手掛かりが得られるのではないでしょうか。
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: Upload Logs Directly Into Club Log
: 904
: 2020/04/06(Mon) 10:58:43
: JA2BQX 太田
JA9AOB 銅子さん、ありがとうございます。 パソコンは Win10 で JTDX は 64Bit版でビルドしています。 Hamlog.hdb をバイナリーで読んで処理する自前のコードでは Hamlog.hdb へのQSOデータ書き込みは成功しています。 sendmessage() 関数を使用しての処理にトライ中です。 32Bit版は Hamlog50.h 使用でビルド出来ますので。 WinIDと言うソフトでJTDXの中で [ Log QSO ] ウインドウのハンドルを取得出来ます。
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!