tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルUNC取得
記事No13809
投稿日: 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

[ツリー表示へ]
タイトルRe: UNC取得
記事No13810
投稿日: 2009/07/05(Sun) 01:30
投稿者オショウ
WNetGetUniversalNameの意味を取り違えておられます。

自PCであれ、他PCであれ・・・
例えば、DOSプロンプトにて
NET USE X: \\MachineName\DATA

※ ID/PWD が必要なら、それらを指定して・・・

とかして、その共有フォルダを仮想ドライブとしてコネクションを
成功させ・・・

その共有フォルダ上のファイル
この場合は、X:\hogehoge.txt とした場合

WNetGetUniversalNameに渡すパスが『X:\hogehoge.txt』として、
得られた結果が
\\MachineName\DATA\hogehoge.txt
となるんです。

WNetGetUniversalNameのリターン値が、2250 と言う意味は、要は
そのネットワークリソースに、コネククションされていないと言う
そのものなんです。(マウントされていない・・・)

お解り頂けたでしょうか・・・

以上。

[ツリー表示へ]
タイトルRe^2: UNC取得
記事No13811
投稿日: 2009/07/05(Sun) 14:28
投稿者ISHIDA
オショウさん ご回答有難うございます。
私の無理解を痛感しました。
ご面倒をおかけしますが、ついでにもう一つ教えてください。

> その共有フォルダを仮想ドライブとしてコネクションを
> 成功させ・・・

る簡単な方法はないでしょうか? API関数かなにか?

[ツリー表示へ]
タイトルRe^3: UNC取得
記事No13812
投稿日: 2009/07/05(Sun) 15:25
投稿者オショウ
> > その共有フォルダを仮想ドライブとしてコネクションを
> > 成功させ・・・
>
> る簡単な方法はないでしょうか? API関数かなにか?

  WNetAddConnection2
  http://msdn.microsoft.com/ja-jp/library/cc446983.aspx

  WNetAddConnection3
  http://msdn.microsoft.com/ja-jp/library/cc446986.aspx

  のAPIのことでしょうか・・・

  因みに解除は

  WNetCancelConnection2
  http://msdn.microsoft.com/ja-jp/library/cc446998.aspx

以上。

[ツリー表示へ]
タイトルRe^4: UNC取得
記事No13813
投稿日: 2009/07/06(Mon) 09:35
投稿者ISHIDA
オショウ様
度重なるご回答有難うございます。
漸く理解できました。

[ツリー表示へ]