| | タイトル | : UNC取得 |  | 記事No | : 13809 |  | 投稿日 | : 2009/07/04(Sat) 15:05 |  | 投稿者 | : ISHIDA | 
 WNetGetUniversalName() について質問します。この関数を使ってローカルPCのUNCを取得しようと試みましたが、どう頑張ってもエラーしか戻ってきません。遂に、関数自体に障害があるのではないかと思い始めました。 どなたか追試験をしてみては頂けないでしょうか?
 いくつか試みた代表的コードを以下に記します。 関数戻り値は常に 2250 です。
 
 Private Declare Function WNetGetUniversalName Lib "mpr" Alias "WNetGetUniversalNameA" _
 (ByVal lpLocalPath As String, ByVal dwInfoLevel As Long, lpBuffer As Any, lpBufferSize As Long) As Long
 
 Private Const UNIVERSAL_NAME_INFO_LEVEL = 1
 Private Const REMOTE_NAME_INFO_LEVEL = 2
 Private Const UNIVERSAL_NAME_BUFFER_SIZE = 1000
 Private Const NO_ERROR = 0
 
 Private Type UNIVERSAL_NAME_INFO
 lpUniversalName                         As Long
 buf(UNIVERSAL_NAME_BUFFER_SIZE - 4)     As Byte
 End Type
 
 Private Sub cmdGetUniversal_Click()
 Dim BufSize         As Long
 Dim uni             As UNIVERSAL_NAME_INFO
 Dim ss As String
 ss = "C:\ABC\DEF"
 
 BufSize = UNIVERSAL_NAME_BUFFER_SIZE
 If WNetGetUniversalName(ss, UNIVERSAL_NAME_INFO_LEVEL, uni, BufSize) = NO_ERROR  Then
 StartLoc = uni.lpUniversalName - VarPtr(uni) - 3
 txtUniversal.Text = Mid$(StrConv(uni.buf, vbUnicode), StartLoc)
 Else
 MsgBox "Error: cannot find the universal path of " & ss, vbOKOnly Or vbExclamation, ""
 End If
 End Sub
 
 |