通常我们访问另一台计算机(直接的说是服务器),提示我们需要输入(服务器)的用户名和密码才能进入,这样我们就可以看里面的图片,文件等等。问题就是,在vb里怎样才能用程序做到这一点。比如我想看(服务器)D盘pic目录里的1.jpg图片,用picture控件。

解决方案 »

  1.   

    可以考虑配置iis服务
    通过网页的形式访问或者ftp
      

  2.   

    注明:1.不想利用网页。
          2.最好能给出代码!具个例子,我的油箱[email protected]
      

  3.   

    http://expert.csdn.net/Expert/topic/2440/2440801.xml?temp=.3961603
      

  4.   

    to alls(搞不定.net):你的文章的确很不错!可是有几点还是不明。
    1.我现在面临的困难是:服务器系统是windows2000 server版。而客户的机器的操作系统是有三种,windows98,windows2000/p,windows/s。在服务器我完全共享一个文件夹名share$(加$是为了让其隐藏),权限用户aaa,密码bbb。能告诉我怎样在不同的操作系统中用程序访问到这个文件夹里的文件吗?(详细代码)。
        2.有个叫“动力港湾 ”提供了mpr.dll的使用方法,可是我试了不成功。问题在call ConnectUserPassword("\\servername", "", "password", "username")中"\\servername"应该填什么?(以我的例子告诉我好吗?我的服务器名server1);第二项""又代表什么?
        3.(接2继续问)Public Function ConnectUserPassword(sDrive As String, sService As String, Optional sUser As String = "", Optional sPassword As String = "") As Boolean 一句中的4个函数值与问题2中的call一下的4个函数值好像对不上吧。
        4.最后想问一句,你最后成功的访问到远程计算机文件夹。需要和这个计算机在同一个域里面吗?最后致上敬意!
                                                       小弟:lntogs(陆楠)
    每天晚上都在线等候佳音!
      

  5.   

    connectuserpassword中的引用参数是对的,一时没有注意,你看那个函数里面的代码就知道了。
    \\servername   应填\\机器名
    第二项是真你要映射的驱动器名,可以不填
      

  6.   

    因为你是Win2000
    所以您必须首先解决安全问题,就是保证这台计算机可以正常的访问目标文件夹
    也就是说,我可以用Windows实现对目标文件夹的访问。
    权限问题解决完之后。就轮到操作系统了。
    首先可以肯定,您的服务器共享方式必须是win2000
    而客户机建议使用Win9x的方法,我曾经试过,win2k支持win9x的访问方法,但是
    反之则不可以。由于win2k的网络是完全的网络,所以网络优势非常明显,可以使用判断
    操作系统的办法改善程序的兼容性。
    ========================
    不过,为什么我没有出现您那样的问题?
      

  7.   

    to 动力港湾:
        你有在98下对2000的文件夹访问吗?能行吗?
    to alls(搞不定)
        能提供我一份你使用成功的例子吗?(原码).谢谢!
      

  8.   

    问一个挺弱智的问题!!!
    servername也可以用ip的吧
      

  9.   

    不好意思,今天才回复您的邮件(fox mail 收到了,没有看)
    我用的是2k<=>2k 98访问NT很容易出现问题(大多数都是设置问题,98得使用网络用户)
    再就是我没有条件测试在域管理下是否可以使用(因为我没有win2kServer)
    我的测试仅限于 win2k对win2k带密码的那种,以及在win2k下使用win9x的办法访问另一个带密码的主机共享目录
    (我家里只有2台机器,其中一台办公用,不能装Server,另一台装不上...)
      

  10.   

    可以通过FTP实现.
    Public Declare Function InternetFindNextFile Lib "WinInet.dll" Alias _
        "InternetFindNextFileA" ( _
        ByVal hfind As Long, _
        lpvFindData As WIN32_FIND_DATA _
    ) As Long
        
    Public Declare Function FtpFindFirstFile Lib "WinInet.dll" Alias "FtpFindFirstFileA" ( _
        ByVal hFtpSession As Long, _
        ByVal lpszSearchFile As String, _
        lpFindFileData As WIN32_FIND_DATA, _
        ByVal dwFlags As Long, _
        ByVal dwContent As Long _
    ) As LongPublic Declare Function FtpGetFile Lib "WinInet.dll" Alias "FtpGetFileA" ( _
        ByVal hFtpSession As Long, _
        ByVal lpszRemoteFile As String, _
        ByVal lpszNewFile As String, _
        ByVal fFailIfExists As Boolean, _
        ByVal dwFlagsAndAttributes As Long, _
        ByVal dwFlags As Long, _
        ByVal dwContext As Long _
    ) As BooleanPublic Declare Function FtpPutFile Lib "WinInet.dll" Alias "FtpPutFileA" ( _
        ByVal hFtpSession As Long, _
        ByVal lpszLocalFile As String, _
        ByVal lpszRemoteFile As String, _
        ByVal dwFlags As Long, _
        ByVal dwContext As Long _
    ) As BooleanPublic Declare Function FtpSetCurrentDirectory Lib "WinInet.dll" Alias _
        "FtpSetCurrentDirectoryA" ( _
        ByVal hFtpSession As Long, _
        ByVal lpszDirectory As String _
    ) As BooleanPublic Declare Function FtpCreateDirectory Lib "WinInet.dll" Alias _
        "FtpCreateDirectoryA" ( _
        ByVal hConnect As Long, _
        ByVal lpszDirectory As String _
    ) As Long'Public Declare Function FtpDeleteFile Lib "WinInet.dll" Alias _
    '     "FtpDeleteFileA" ( _
    '    ByVal hConnect As Long, _
    '    ByVal lpszFileName As String _
    ') As Boolean
    ' Initializes an application's use of the Win32 Internet functions
    Public Declare Function InternetOpen Lib "WinInet.dll" Alias "InternetOpenA" ( _
        ByVal sAgent As String, _
        ByVal lAccessType As Long, _
        ByVal sProxyName As String, _
        ByVal sProxyBypass As String, _
        ByVal lFlags As Long _
    ) As Long' User agent constant.
    Public Const scUserAgent = "vb wininet"' Use registry access settings.
    'Public Const INTERNET_OPEN_TYPE_PRECONFIG = 0
    Public Const INTERNET_OPEN_TYPE_DIRECT = 1
    Public Const INTERNET_OPEN_TYPE_PROXY = 3
    'Public Const INTERNET_INVALID_PORT_NUMBER = 0
    'Public Const FTP_TRANSFER_TYPE_ASCII = &H1
    'Public Const FTP_TRANSFER_TYPE_BINARY = &H1
    'Public Const INTERNET_FLAG_PASSIVE = &H8000000' Opens a HTTP session for a given site.
    Public Declare Function InternetConnect Lib "WinInet.dll" Alias "InternetConnectA" ( _
        ByVal hInternetSession As Long, _
        ByVal sServerName As String, _
        ByVal nServerPort As Integer, _
        ByVal sUsername As String, _
        ByVal sPassword As String, _
        ByVal lService As Long, _
        ByVal lFlags As Long, _
        ByVal lContext As Long _
    ) As Long' Closes a single Internet handle or a subtree of Internet handles.
    Public Declare Function InternetCloseHandle Lib "WinInet.dll" ( _
        ByVal hInet As Long _
    ) As Integer=============declare========================
    =============================================Private hConnection As Long
    Private hOpen As LongPrivate Function FInternetOpen(FtpIp As String) As Long
    On Error GoTo ErrorProcess
        'If Len(Proxy) <> 0 Then '设置代理服务器
            'hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PROXY, txtProxy.Text, vbNullString, 0)
        'Else  '没设置代理服务器
            hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
        'End If    FInternetOpen = hOpen
    Normal_Exit:
        Exit Function
    ErrorProcess:
        cgsb_ErrorProcess "FtpFunModule1.FInternetOpen()"
        
        '' For debug
        '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        #If intDebugFlag = 1 Then
            Resume Next
        #End If
        '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        
        '' Fail
        FInternetOpen = 0
        
    End Function
    Public Function Connect(FtpIp As String, strUserName As String, strPassWord As String) As BooleanOn Error GoTo ErrorProcess    Dim hOpenC As Long
        Dim g_IntPort As Long
        hOpenC = FInternetOpen(FtpIp)
        
        g_IntPort = 21
        If Not (oActiveSession) And hOpenC <> 0 Then
            Dim nFlag As Long
            nFlag = 0
            
            'hConnection = InternetConnect(hOpenC, FtpIP,   INTERNET_INVALID_PORT_NUMBER, _
                strUserName, strPassWord, INTERNET_SERVICE_FTP, nFlag, 0)
            hConnection = InternetConnect(hOpenC, FtpIp, g_IntPort, _
                strUserName, strPassWord, INTERNET_SERVICE_FTP, nFlag, 0)
            If hConnection = 0 Then
                oActiveSession = False
                Connect = False
           
            Else
                oActiveSession = True
                Connect = True
                
           End If
        Else
          If oActiveSession = True Then Connect = True
        End If
    Normal_Exit:
        Exit Function
    ErrorProcess:
        cgsb_ErrorProcess "FtpFunModule1.Connect()"
        
        '' For debug
        #If intDebugFlag = 1 Then
            Resume Next
        #End If
        
        '' Fail
        Connect = False
        
    End FunctionPrivate Function Rcd(pszDir As String) As Boolean
    On Error GoTo ErrorProcess
        If pszDir = "" Then
            MsgBox "Please enter the directory to CD"
            Exit Function
        Else
            Dim sPathFromRoot As String
            Dim bRet As Boolean
       
            Rcd = FtpSetCurrentDirectory(hConnection, pszDir)
        
        End If
    Normal_Exit:
        Exit Function
    ErrorProcess:
        cgsb_ErrorProcess "FtpFunModule1.Rcd()"
        
        '' For debug
        '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        #If intDebugFlag = 1 Then
            Resume Next
        #End If
        '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        
        '' Fail
        Rcd = False
        
    End Function''path 格式为 //dir1/dir2/ 
    ''strfilename 为远程FTP上的文件名 没有路径 eg: word1.doc
    ''strLDir  为本地上的文件名 有路径和文件名 eg: d:\word2.doc
    function mainFunction(byval path as string,byval strFileName as string,byval strLDir as string)
        If Connect(strFtpIP, strUserName, strPassWord) Then
            if rcd(path) then
                 FtpGetFile(hConnection, strFileName, strLDir ,   hFlag, 0, INTERNET_FLAG_RELOAD, 0)  ''此函数用于下载 FTP服务器上的一个文件成功返回True 否则返回 False
            end if    end ifend function下载到本地后再作处理,代码不全需补充