ネットワーク接続の名前を取得 <TOP>
GetDriveType ドライブのタイプを取得
WNetGetConnection ローカル装置に対応するネットワーク資源の名前を取得
'================================================================ '= ネットワーク接続の名前を取得 '= (WNetGetConnection.bas)
'================================================================ #include "Windows.bi" ' ドライブのタイプを取得 Declare Function Api_GetDriveType& Lib "Kernel32" Alias "GetDriveTypeA" (ByVal nDrive$) ' ローカル装置に対応するネットワーク資源の名前を取得 Declare Function Api_WNetGetConnection& Lib "mpr" Alias "WNetGetConnectionA" (ByVal lpszLocalName$, ByVal lpszRemoteName$, cbRemoteName&) #define DRIVE_CDROM 5 'CD-ROMドライブ #define DRIVE_FIXED 3 '固定タイプ−主にハードディスク #define DRIVE_NO_ROOT_DIR 1 'ルートディレクトリ無し #define DRIVE_RAMDISK 6 'RAMドライブ #define DRIVE_REMOTE 4 'ネットワーク #define DRIVE_REMOVABLE 2 '取り外し可能タイプ−リムーバブルディスク #define DRIVE_UNKNOWN 0 'ドライブが不明 #define WN_NO_ERROR 0 '関数成功 #define WN_BAD_DEVICE 1200 'lpLocalNameパラメータが指す文字列が無効 #define WN_CONNECTION_UNAVAILABLE 1201 '装置は現在接続されていないが、恒久的な接続として記憶されている #define WN_EXTENDED_ERROR 1208 'ネットワーク固有のエラーが発生 #define WN_MORE_DATA 234 'バッファのサイズが不十分 #define WN_NOT_SUPPORTED 50 'サポート外 #define WN_NO_NET_OR_BAD_PATH 1203 '指定したローカル名を使った接続を認識するプロバイダがない #define WN_NO_NETWORK 1222 'ネットワークに接続されていない #define WN_NOT_CONNECTED 2250 'lpLocalNameパラメータで指定した装置がリダイレクトされていない Var Shared Text1 As Object Var Shared Combo1 As Object Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14 Combo1.Attach GetDlgItem("Combo1") : Combo1.SetFontSize 14 '================================================================ '= '================================================================ Declare Function GetUNCName(Drive As String) As String Function GetUNCName(Drive As String) As String Var Buffer As String Var Leng As Long Var Msg As String Var Ret As Long Buffer = Space$(255) Leng = Len(Buffer) Ret = Api_WNetGetConnection(Drive, Buffer, Leng) Select Case Ret Case WN_BAD_DEVICE Msg = "パラメータが指す文字列が無効" Case WN_CONNECTION_UNAVAILABLE Msg = "装置は現在接続されていないが、恒久的な接続として記憶されている" Case WN_EXTENDED_ERROR Msg = "ネットワーク固有のエラーが発生" Case WN_MORE_DATA Msg = "バッファのサイズが不十分" Case WN_NOT_SUPPORTED Msg = "サポート外" Case WN_NO_NET_OR_BAD_PATH Msg = "指定したローカル名を使った接続を認識するプロバイダがない" Case WN_NO_NETWORK Msg = "ネットワークに接続されていない" Case WN_NOT_CONNECTED Msg = "lpLocalNameパラメータで指定した装置がリダイレクトされていない" Case Else Msg = "" End Select If Msg <> "" Then A% = MessageBox("", Msg, 0, 2) Else GetUNCName = Left$(Buffer, Leng) End If End Function '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Var i As Integer Var Drive As String * 2 For i = 0 To 25 Drive = Chr$(i + 65) & ":" Select Case Api_GetDriveType(Drive) Case DRIVE_REMOTE Combo1.AddString Drive Case Else End Select Next i End Sub '================================================================ '= '================================================================ Declare Sub Combo1_Change edecl () Sub Combo1_Change() Text1.SetWindowText GetUNCName(Combo1.GetWindowText) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End