|
|
||||
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"); }; } //------------------------------------------------------------------- |