「ネットワークパスワードの入力」を表示させる為には?

解決


メカ沢  2004-10-08 17:51:33  No: 116859  IP: [192.*.*.*]

あるサーバのフォルダを共通にし、あるシステムよりそこにファイルを書き込み
に行きたいのですが、一度「ネットワークパスワードの入力」にてログイン?
すれば問題なくシステムからファイルが作成されるのですが、一度もログイン
していない状態では、ファイルオープンにてエラーが発生します。

そこで、「ネットワークパスワードの入力」をシステムから最初の一回のみ
でもいいので出したいのですが、出し方のアドバイス等のご教授お願いします。

編集 削除
Max  2004-10-08 20:26:47  No: 116860  IP: [192.*.*.*]

この辺を参考にしてみてはいかがでしょう。
ttp://www.galliver.co.jp/writing/vbm_tokushu/api9031/

編集 削除
junchan  2004-10-10 06:24:34  No: 116861  IP: [192.*.*.*]

同じ問題につきあたっていました。参考書に下記のTipがありました。
(秀和システム「VisualBasic逆引き大全500の極意」)
私はこれで解決しました。

' API宣言
Private Declare Function SHBrowseForFolder Lib "shell32.dll" _
                                  (lpbi As BrowseInfo) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _
                                  (ByVal pidList As Long, _
                                   ByVal lpBuffer As String) As Long
Private Declare Function lstrcat Lib "kernel32.dll" Alias "lstrcatA" _
                                  (ByVal lpString1 As String, _
                                   ByVal lpString2 As String) As Long
' 構造体宣言
Private Type BrowseInfo
    hWndOwner       As Long
    pIDLRoot        As Long ' 表示する範囲を指定
    pszDisplayName  As Long
    lpszTitle       As Long ' ダイアログボックスのタイトル
    ulFlags         As Long ' 選択可能範囲を指定
    lpfnCallback    As Long
    lParam          As Long
    iImage          As Long
End Type
' 定数宣言
Private Const BIF_RETURNONLYFSDIRS = 1  ' 共有フォルダのみ選択可能
Private Const CSIDL_NETWORK = &H12      ' ネットワークのみ閲覧可能にする
Private Const MAX_PATH = 260

Private Sub Command1_Click()
    Dim lngpidList  As Long
    Dim lngRes      As Long
    Dim strBuffer   As String
    Dim tBrowseInfo As BrowseInfo
    Dim strNetPath  As String
    
    With tBrowseInfo
        .hWndOwner = Me.hWnd
        .pIDLRoot = CSIDL_NETWORK
        .lpszTitle = lstrcat("ネットワークの参照", "")
        .ulFlags = BIF_RETURNONLYFSDIRS
    End With
    lngpidList = SHBrowseForFolder(tBrowseInfo)
    If (lngpidList) Then
        strBuffer = Space$(MAX_PATH)
        lngRes = SHGetPathFromIDList(lngpidList, strBuffer)
        If (lngRes) Then
            strNetPath = Left(strBuffer, InStr(strBuffer, vbNullChar) - 1)
            MsgBox strNetPath
        Else
            MsgBox "パス取得に失敗しました。"
        End If
    Else
        MsgBox "表示に失敗しました"
    End If
End Sub

編集 削除
メカ沢  2004-10-13 13:28:23  No: 116862  IP: [192.*.*.*]

礼が遅くなり申し訳ありません。
Maxさんの方を参考に使わせてもらいました。
Maxさん、junchanさん、教えていただいてありがとうございました

編集 削除