|
|
||||
アプリケーション > ダイヤルアップ接続管理ツールを作る [ 1 | 2 ] |
|||||
ダイヤルアップ接続管理ツールを作る - 1/2 |
更新 : 2009/01/04 |
||||
|
|
||||||||||||||||||||||||||||||
ここではダイヤルアップ接続(※1)管理ツールの作成について解説します。 ダイヤルアップ接続管理ツールとは、インターネット接続時に通信時間を記録して、切断のタイミングや料金をコントロールするのに役立てるというものです。 Windows が提供するインターネットの接続時間は [接続] ダイアログで接続ボタンをクリックすると表示されるようになりますが、これはインターネットに接続されている時間なので、月々の通信時間およびかかった料金は分りません。ちなみに私の家では、ダイヤルアップ接続を利用していた時(現在は ADSL 接続)、インターネットに接続するまでに 40〜50 秒の通信時間が経過(ダイアログに "ダイヤル中" が表示されているときは、既に通信料の課金が始まっている)していました。 この時間を累計していかないと、支払いの金額がおやっと思うほど多い場合があります。思い当たる人も多いのではないでしょうか。ということで通信時間を表示するツールを作ろうと言うわけです。作成には、スタンドアローンでモデム接続という一般的なパソコン環境を想定しています。 (※1)最近では ADSL の普及で、ダイヤルアップ接続を利用する人も激減していると思います(少し前に 30% は使用とする記事も見かけましたが……)。しかし ADSL が使えるようになったとは言え、私の地域のように二つのプロバイダが対応しているだけで、通信速度も自由に選べない、などの場合もあるはずです。そうしたことを考えるとダイヤルアップ接続の需要はまだあるのかもしれません。解説のタイミングとしては、ちょっと遅かった、という感じも否めませんが、インターネット関連ソフトの参考例と言うことでご覧ください。 ダイヤルアップ接続管理ツール作成のポイント 今回は、Win32API の RasEnumConnections 関数を利用します。この関数でダイヤルアップ接続のタイミングを監視して時刻を記録していきます。 具体的には、このソフトを実行してから IE を起動後、[接続] ダイアログから接続して通信の開始時刻を取得します。切断の場合は、[接続] ダイアログから切断して終了時刻を取得します。これで通信に要した時間がわかります。アプリとしては常駐ソフト的な動きですが、実際に使うには例によって、もろもろ修正する必要があります(後述)。 テクニック的には特に難しいところはありませんので、早速作ってみることにしましょう。 まず新規にアプリケーションを作成して、コンポーネントを以下のように配置します。Form のサイズは適当で良いです。
コンポーネントの配置が済んだら、ヘッダーファイル
Unit1.h のコーディングを行います。
次に実際のコードを Unit1.cpp に書いていきます。 まず今回のメイン関数、CheckDialup をインプリメントします。この関数は、ダイヤルアップ接続の状態をチェックして、接続していれば true、未接続なら false を返します。動きを見ていきましょう。 最初に RasEnumConnections 関数ですべてのアクティブなリモートアクセス接続のリストを調べます。ダイヤル中あるいは接続されているものがあれば、バッファに接続数が入ってきます。接続数が 0 でなく、connected フラグが false であれば時刻(通信開始時刻)を取得します。すぐにフラグを true (接続中)に変更して関数を抜けます。 切断された場合は、ダイヤル中あるいは接続されているものがなくなるので、フラグを false にして関数終了です。なお、RasEnumConnections 関数の詳細については WIN32SDK のヘルプを参照してください。
続く・・・。 |