以下がタイマー部から呼び出しているルーチン部分の一部である。
Hwnd1 = FindWindow("TThwin", vbNullString)
If Hwnd1 < 1 Then
Timer1.Enabled = False 'TIMER STOP し 終了
Label10.Text = "ハムログが起動していません。"
MsgBox("HAMLOGは閉じました。")
combtnoff()
Exit Sub
End If
ハムログの終了ボタンを押してうまい具合に検出した格好になった。
ちなみに私のタイマーコマンドの中でのプログラムはハムログの周波数を上記のルーチンからパブリック変数にしてあるAutoRLcont変数に値を取り込みその値をSelectCase分で出力制御しているだけです。AutoRLcont変数は最初に初期化で0にしてから使います。Button9_Click(sender,e)が上記変数に値を取得するルーチンです。前のフォームで表示したハムログ読取ボタンのプログラム部です。このボタン9をプログラム上から呼んで自動押下処理としています。
以下記します。
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
AutoRLcont = 0
Button9_Click(sender, e)
Select Case AutoRLcont
Case 0.1 To 3.555
Dim inRet As Boolean
intDat(0) = Val("&H" + "D")
inRet = USBIO.uio_out(1, intDat(0), 0) 'L
Case 3.551 To 3.575
Dim inRet As Boolean
intDat(0) = Val("&H" + "C")
inRet = USBIO.uio_out(1, intDat(0), 0) 'L
Case 3.576 To 3.764
Dim inRet As Boolean
intDat(0) = Val("&H" + "9")
inRet = USBIO.uio_out(1, intDat(0), 0) 'L
Case 3.765 To 4.999
Dim inRet As Boolean
intDat(0) = Val("&H" + "8")
inRet = USBIO.uio_out(1, intDat(0), 0) 'L
Case 5.0 To 7.099 '730v-1
Dim inRet As Boolean
intDat(0) = Val("&H" + "F")
inRet = USBIO.uio_out(1, intDat(0), 0) 'L
Case 7.1 To 7.199 '730v-1 +high
Dim inRet As Boolean
intDat(0) = Val("&H" + "E")
inRet = USBIO.uio_out(1, intDat(0), 0) 'L
Case 7.2 To 29.999
Dim inRet As Boolean
intDat(0) = Val("&H" + "F")
inRet = USBIO.uio_out(1, intDat(0), 0) 'L
End Select
End Sub
もちろん周波数範囲は自分で作製したコントロールボックスの中の回路と無線機の仕様にて決めています。改善した部分のフォームを添付しました。最初がハムログを開くボタンを押してハムログが起動した状態のフォーム、次がハムログの閉じるボタンで終了した後のフォーム上のメッセージボックスの状態、最後がメッセージボックスのOKボタンを押してからの初期化フォームの状態(初期化とはいっても周波数コマンド設定はされています。また先に読み取った周波数表示はそのままです。本当の立ち上げ時は101のコールサインコマンドで周波数はFreqの表示が本当の初期状態です。)以上です。まだまだ改善の余地はありそうです。