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

CBアプリ工房


Tips >   

InternetQueryOption で [接続] を調べる 

更新 : 2014/09/21

 


解説:
インターネットに接続したり切断したりなどの作業をしていると、現在どちらなのか知っておきたくなります。
今回は、オンラインなのかオフラインなのか設定状態を InternetQueryOption を使って判断してみます。

ちょっと寄り道:
BOOL InternetQueryOption(
    HINTERNET hInternet, // インターネットのハンドル
    DWORD OptionType,   // 情報取得識別フラグ
    LPVOID Buf,              // 取得情報格納バッファ
    LPDOWRD BufSize);   // バッファサイズ

使用例:
以下の例では、アプリケーションを起動後、Button1 をクリックすると、インターネットの接続状態に応じて、オンラインかオフラインかのメッセージを表示します。

コーディングでは、 "Unit1.cpp" に "wininet.h" をインクルードしておきます。
    例:#include <wininet.h>
次に「プロジェクト」−「プロジェクトに追加」で "Inet.lib" を追加します。
    例:USELIB("..\..\Programs\Borland\CBuilder3\LIB\INET.LIB");

コンポーネントの準備としては Button を適当に配置するだけです。
Button1 をクリックすると、"on line" あるいは "off line" のメッセージが表示されます。

Win32API の関数を使えば、接続、切断の設定も行うことができます。時間のある方は挑戦してみてください。 

//-------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    DWORD state = 0;
    DWORD size = sizeof(DWORD);

    // 指定されたハンドルに対するインターネットのオプション情報を取得
    if (InternetQueryOption(NULL, INTERNET_OPTION_CONNECTED_STATE, &state, &size)) {
        // 他のフラグが含まれているか調べてから比較
        // 3 番目の引数に INTERNET_STATE_CONNECTED が格納されていればオンライン
        if (state & INTERNET_STATE_CONNECTED)
            ShowMessage("on line");
        else
            ShowMessage("off line");
    };
}
//-------------------------------------------------------------------
 



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