ホーム
|
アプリケーション | Tips | ダウンロード | プログラム
| コラム

CBアプリ工房


アプリケーション > ダイヤルアップ接続管理ツールを作る [ 1 | 2 ]

ダイヤルアップ接続管理ツールを作る - 2/2

更新 : 2009/01/23

 


その他のイベントハンドラを記述します。

コンストラクタでは、必要な初期設定をします。Timer1 は Enabled が true なので、このままでダイヤルアップ接続の監視が始められます。


__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
    //初期設定
    StartLabel->Caption = "";
    MsgLabel->Caption   = "";
    connected = false;//未接続

    //タイマー起動でダイヤルアップ接続の監視が始まる 
}

次に OnTimer でのイベントを記述します。

ここでは、最初にダイヤルアップ接続の状態を判定します。未接続の場合は、状態をメッセージ表示後、ダイヤルアップ接続をチェックします。接続されるまで監視を続け、接続されたら、通信開始時刻と状態のメッセージを表示します。

接続の場合は、ダイヤルアップ接続をチェックして、切断されていればタイマーを停止後状態をメッセージ表示します。接続中ならば、現在時刻を取得して、経過時間を計算します。


void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
    switch(connected){
    case false://未接続
        MsgLabel->Caption = "状態: 未接続です。";
        //ダイヤルアップ接続するまで繰り返す
        if(!CheckDialup()) return;

        //ダイヤルアップ接続されたら、通信開始時刻を表示
        StartLabel->Caption = starttime.TimeString();
        MsgLabel->Caption   = "状態: 接続しています。";
        break;
    case true://接続中
        //ダイヤルアップ接続が切断されたらタイマーを止める 
        if(!CheckDialup()){
            Timer1->Enabled   = false;
            MsgLabel->Caption = "状態: 未接続です。";
            return;
        }

        //ダイヤルアップ接続していれば処理する
        //現在の時刻を取得
        TDateTime t, nowtime;
        nowtime = t.CurrentTime();

        //通信時間を表示
        PassEdit->Text = TimeToStr(nowtime - starttime);
    }
}

最後に、接続中に終了しようとした場合の処理を追加しておきます。CheckDialup でダイヤルアップ接続の状態を調べ、接続中であればメッセージを表示して OnCloseQuery をキャンセルします。


void __fastcall TForm1::FormCloseQuery(TObject *Sender, 
     bool &CanClose)
{
    //ダイヤルアップ接続中ならメッセージを返す
    if(CheckDialup()){
        ShowMessage("接続中です。");
        CanClose = false;
        return;
    }
}

これですべてのコーディングが終わりました。
コンパイルして実行してみてください。無事通信時間が記録できましたか?
ダイヤルアップ接続管理ツールの作成はこれで終わりです。お疲れ様でした。



今後の課題
今回作成したダイヤルアップ接続管理ツールは、起動後一度しか通信時間を取得できません。何度も繰り返し記録でき、通信時間も累計していく機能が欲しいところです。その他気づいた点があれば、修正して、使いやすいソフトに拡張してください。

以上のコードは、ご自由にお使いいただいて結構です。ただし、コードを使用した結果、問題が生じても責任はいっさい負いかねますのでご了承ください。



[ ホーム | ページトップ | 前へ | ブック | リンク | サイトマップ ]
Copyright(c) 2003 Shibu All rights reserved.