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

太田さん,初めまして.

> HAMLOGにから自作アプリケーションにデータを渡すことも出来ます。
> Hamlogからコールサインを受け取りEntity解析をしてHamlogに、そのEntityのCodeを送る...や
> WKD/CFM状況を表示するなどの自作ソフトで利用させていただいていました。

なるほど,逆も出来るのですね.Hamlogから取得して,何らかに変換して,Hamlogに戻すことが出来るのですね.

> こちらではサンプルの記述で上手く動作しています。
> 下記に一部を抜粋します。
>
> Module1 の中に記述

> Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal wnd As Long, _
> ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As COPYDATASTRUCT) As Long

正しくは,ByRef lParam As COPYDATASTRUCT ですか.
私の場合は,Iparam As Any で動作しちゃいました.

> cmmd = 15 Or THW_ENTER Or THW_FOCUS
> cds.dwData = cmmd
> cds.cbData = LenB(Trim(cbuff)) / 2 ' 文字列の長さ
> cds.lpData = cbuff
> hHwnd2 = SendMessage(HamloghWnd, WM_COPYDATA, DX_chk_hwnd, cds)

ここまでは,THW_FOCUSを除いて,うまくいったのですが...

> lRet = SetWindowPos(hHwnd2, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)

なるほど,こういう手もあるのですね.

それと,ウィンドウのハンドルですが,使用する関数の直近の値を使わないとダメなんですね?
私の場合,SendMessageの後,SetForegroundWindow でやろうとしましたが,対象のウィンドウのハンドルを,最初に取得した,Hwnd1 = FindWindow("TThwin", 0)の値を使っていました.しかし,今やってみたところ,ハンドルを戻り値にしてやっても,うまくいきませんでした(SetForegroundWindow の戻り値が0).

それで,
Call AppActivate("Turbo HAMLOG", 0)
にしてみたら,うまくいったわけです.
うまくいったと思ったら,対象ウィンドウが最小化されている状態ではエラーになることがわかりました.最小化を含め,ハムログが起動されていなければ一連の操作には続かない(最初のハンドルの取得で無ければお終い)わけで,AppActivateで使うのなら,エラー割り込みで,エラーコードと合せて,”最小化されているHamlogを開いて下さい”等のメッセージを出すか,太田さんの方法に変えるか...

サジェッションありがとうございました.

2014/02/09(Sun) 16:29:05  [No.398]


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