| |||||||||||||||||||||||||||||||||||||||||
サイト内検索
カスタム検索
|
ネットワークリストマネージャによるネットワーク接続の有無の確認方法Vista 以降利用可能なネットワークリストマネージャとは?Windows Vista 以降、ネットワークリストマネージャ (Network List Manager, NLM) が実装され、 それが Network List Manager API を通して、プログラムから利用可能です。 NLM は何をするものかというと、欲しいネットワーク、条件にあったネットワークを探す、というのが第一の目的です。 この資料では NLM を用いて、「現在ネットワークに接続しているかどうか」 という状態を取得してみましょう。 ネットワークに接続しているか否か、という点については NLM API のインターフェイスのひとつである INetworkListManager の get_IsConnected メソッドが利用できます。 ネットワークリストマネージャの一番単純な利用方法NLM は COM で実装されていますので、これを利用するには基本的な COM プログラミングの知識が必要です。 この辺が基本的な C 言語を勉強した直後には、なかなか Windows のコードが書けない理由のひとつです。 よくわからない、という方は当サイトの Windows プログラミング入門 や Windows のおすすめ書籍 などを参考にしてください。 ではさっそく、NLM を利用するコードを書いてみましょう。 以下のコードを nlm1.cpp として保存します。 #include <windows.h> #include <stdio.h> #include <Netlistmgr.h> void main() { HRESULT hr = 0; VARIANT_BOOL vb = 0; INetworkListManager* pNlm = NULL; hr = CoInitialize( NULL ); if( FAILED(hr) ) { printf( "CoInitialize Failed.\n" ); return; } hr = CoCreateInstance( CLSID_NetworkListManager, NULL, CLSCTX_ALL, IID_INetworkListManager, (void**) &pNlm ); if( FAILED(hr) ) { printf( "CoCreateInstance Failed.\n" ); CoUninitialize(); return; } hr = pNlm->get_IsConnected ( &vb ); if( SUCCEEDED(hr) ) { if( vb ) { printf("Network Connected!\n" ); } else { printf("Network Not Connected.\n" ); } } else { printf( "get_IsConnected Failed.\n" ); } pNlm->Release(); CoUninitialize(); return; } makefile は次のとおりです。
TARGETNAME=nlm1
OUTDIR=.\chk
LINK32=link.exe
ALL : "$(OUTDIR)\$(TARGETNAME).exe"
CPPFLAGS=\
/nologo\
/MT\
/W4\
/Fo"$(OUTDIR)\\"\
/Fd"$(OUTDIR)\\"\
/c\
/Zi\
/D_WIN32_WINNT=0x0600
LINK32_FLAGS=\
ole32.lib\
/nologo\
/subsystem:console\
/pdb:"$(OUTDIR)\$(TARGETNAME).pdb"\
/out:"$(OUTDIR)\$(TARGETNAME).exe"\
/DEBUG\
/RELEASE
LINK32_OBJS= \
"$(OUTDIR)\$(TARGETNAME).obj"
"$(OUTDIR)\$(TARGETNAME).exe" : "$(OUTDIR)" $(LINK32_OBJS)
$(LINK32) $(LINK32_FLAGS) $(LINK32_OBJS)
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
.c{$(OUTDIR)}.obj:
$(CPP) $(CPPFLAGS) $<
.cpp{$(OUTDIR)}.obj:
$(CPP) $(CPPFLAGS) $<
このコードをビルドすると、chk サブディレクトリ内に nlm1.exe ができます。 ネットワーク接続がある場合は、次のように表示されるはずです。 > nlm1.exe Network Connected! > |
||||||||||||||||||||||||||||||||||||||||
|
© 2008-2010 小山圭介 All Rights Reserved.
|
|||||||||||||||||||||||||||||||||||||||||