.NET特集
 N1.Web関連
 Q1.VS2005自作Visualizer
 R1.OpenCV

VB6特集
 S1.Net関連(95/98)
 S2.Net関連(NT)
 ├1.NetServer
 ├2.NetSchedule
 ├3.NetGroup
 ├4.NetLocalGroup
 ├5.NetUser
 ├6.NetShare
 ├7.NetSession
 ├8.NetFile
 └9.NetConnection
 S3.コモンダイアログの拡張
 S4.MailSlot関連
 S5.RAS関連
 S6.セキュリティ関連
 S7.FAX制御(Win2000)
 S8.ADSIの利用
 T1.グラデーションバー
 T2.アイコンメニュー
 T3.バーコード(NW7)
 Net関連(NT) - NetConnection
ここでは、NetConeection関連のAPIの使用方法を説明します。関連と言っても一つの関数 NetConnectionEnum 関数しかありませんが... NetConnectionEnum 関数は、あるコンピュータの資源に接続(Connect)されている情報を列挙する場合に使用します。 但し、接続されている全ての情報を列挙できるのではなく、特定の 共有資源名 または コンピュータ名 の情報を列挙します。 ここで説明する内容は、私個人が注意する点と認識した内容を説明しています。ここで使用したサンプルでは、 NetConnectionEnum 関数のを使用しやすいように、汎用モジュールとして提供しています。
 使用する関数の概要
■ネットコネクション列挙
Private Declare Function NetConnectionEnum Lib "netapi32.dll" ( _
                                         ByVal servername As String, _
                                         ByVal qualifier As String, _
                                         ByVal level As Long,
                                         bufptr As Any, _
                                         prefmaxlen As Long, _
                                         entriesread As Long, _
                                         totalentries As Long, _
                                         resume_handle As Any) As Long
servername 対象となるサーバー名の UNICODE 文字列を指定します。 省略(NULL)が指定された場合は、ローカルコンピュータが対象になります。 UNICODE 文字列で指定しなければならないので、StrConv(サーバー名, vbUnicode) のように指定します。
qualifier 列挙される情報の対象条件を指定します。ここで指定できる条件は、 共有資源名 または、コンピュータ名 です。 levelに 1 が指定せれている場合、 この値を、共有資源名 にした場合、列挙された CONNECTION_INFO_1 構造体の coni1_netname メンバの値には、コンピュータ名が格納され、コンピュータ名にし た場合、 列挙された CONNECTION_INFO_1 構造体の coni1_netname メンバの値には、共有資源名 が格納されます。
level bufptrに格納される配列の構造体を指定します。
0:CONNECTION_INFO_0
1:CONNECTION_INFO_1
bufptr 列挙されたlevelで指定された構造体配列のバッファポインタを受け取ります。 この値は、構造体配列のポインタですので、MoveMemory 関数を使用して、適切に処理するようにします。 また、処理が終了した場合は、NetAPIBufferFree 関数を使用して、バッファの解放を行わなければなりません。
prefmaxlen 返される情報の最大バイト数を指定します。0 でも構いません。
entriesread 実際に列挙できたデータ数。
totalentries 列挙されるデータの総数。
resume_handle 列挙する次の情報へのハンドル。返された値が 0 の場合は、次の列挙情報はなし。
戻り値 0 の場合は、正常終了です。ERROR_MORE_DATA = 234 の場合は、次の列挙情報がまだ存在するので、 resumehandle メンバの値を使用して、再度列挙する必要があります。 これらの値以外は、エラーですので、適切な処理を行って下さい。 サンプルでは、mErr.bas 汎用モジュールを使用して、エラーメッセージを表示するようになっています。
 mNetConnection汎用モジュールの概要
プロパティ
プロパティ名 データ型 説明
NetConnectionServer String 対象となるサーバーを指定します。値の取得も可能です。
NULLを設定した場合は、ローカルコンピュータが対象になります。
プロシージャ
プロシージャ名 戻り値 説明・引数
ConnectionEnum1 0 = 正常
0以外 = 異常(エラー番号)
接続状況の列挙
[I] strQualifier : 対象となるコンピュータ名または共有資源名
[O] lngCount : 列挙された情報の数
[O] tCI1VB() : 列挙情報を格納するCONNECTION_INFO_1_VB構造体配列
 mNetFile汎用モジュールの補足
CONNECTION_INFO_1_VB構造体は、CONNECTION_INFO_1構造体の各メンバをVBより使用し易いように、 適切な型に置き換えた構造体です。適切な型に置き換えとは、文字列へのポインタ(Long)を文字列(String)などにする事を言います。 「使用する構造体の概要」で説明したような、mUtility.bas 汎用モジュールの GetPtrToStrA ファンクションプロシージャを呼び出して、 文字列に変換する処理は、ConnectionEnum1 ファンクションプロシージャで既に行っていますので、意識して、 文字列へのポインタ(Long)を文字列(String)などにする必要はありません。

WIN32 アプリケーションで使用する場合、WNetEnumResource 関数を使用する事が推奨されていますが、 NetConnectionEnum 関数も使用できるようですので、この説明を行いました。

 サンプル
サンプルダウンロード(11KB)

Copyright © 2005 tadahiro higuchi. All Rights Reserved.