在VFP5中映射网络驱动器

Author: 潘雷 Date: 1999年 第29期 13版

  在小型的办公自动化网络中,有时需要在程序中建立网络映射,来实现资源共享、文件传输等功能。VFP5本身并未提供类似函数,但我们可以利用Windows API函数来实现上述功能。Windows API函数中与建立网络映射有关的函数有以下两个:
  WNetAddConnection()建立网络映射;
  WNetCancelConnection()断开网络映射。
  下面分别对上述两个函数进行说明。
  WNetAddConnection()用来建立网络映射,它包含3个参数:
  LpszNetPath:字符串,要映射的网络路径名和共享名,如:“\\remotehost\sharedrv”;
  LpszPassword:字符串。共享资源的口令,由服务器端提供;
  LpszLocalName:字符串,即映射到本地的驱动器盘符,如:“F:”、“G:”。
  返回值:
    WN_SUCCESS=0&&成功
  WN_NOT_SUPPORTED=50&&函数不被支持
  WIN_OUT_OF_MEMORY=8&&系统内存不足
  WN_NET_ERROR=59&&网络发生错误
  WN_BAD_POINTER=487&&无效指针
  WN_BAD_NETNAME=67&&无效网络名
  WN_BAD_LOCALNAME=1200&&无效本地名
  WN_BAD_PASSWORD=86&&无效口令
  WN_ACCESS_DENIED=5&&访问被拒绝
  WN_ALREADY_CONNECTED=85&&此连接已经建立(重复建立)
  WNetCancelConnection()用来断开网络映射,它包含2个参数;
  LpszName:字符串,需断开的驱动器盘符。
  bForce:逻辑型,用LOGN数据类型表达。是否强行断开。
  返回值:
  WN_SUCCESS=0&&成功
  WN_NOT_SUPPORTED=50&&函数不被支持
  WN_OUT_OF_MEMORY=8&&系统内存不足
  WN_NET_ERROR=59&&网络发生错误
  WN_BAD_POINTER=487&&无效指针
  WN_BAD_VALUE=87&&网络名LpszName无效
  WN_NOT_CONNECTED=2250&&无须断开的连接
  WN_OPEN_FILES=2401&&需断开的连接中有打开的文件,则参数bForce被设为False。
  假设NT服务器ser_host中有一共享目录,(名为drive1)利用将服务器上的共享目录映射到本地(Win95/98),然后将本机器根目录下的config.sys文件传送到此目录下,断开连接。其中还用到一个拷贝文件的API函数:
  CopyFile(lpExistingFileName,lpNewFileName,bFailIfExists)
  参数含义为:
  lpExistingFileName(字符串),源文件名;
  lpNewFileName(字符串),目标文件名;
  bFailIfExists(逻辑型),如果目标文件已存在,是否返回错误信息;
  此函数返回0表示复制失败,1表示复制成功,源程序如下:
  FileName:Connect.prg
  Func:Remote File Copy
  set talk off
  set esca off
  Declare Long WNetAddConnection in ″mpr.dll″String lpszNetPath,String lpszPassword,String lpszLocalName &&声明API函数
  WNetAddCommection
  Declare Long WNetCancelConnection in″mpr.dll″ String lpszName,Long bForce  &&声明API函数WNetCancelConnection
  Declare Long CopyFile in ″kernel32″ String lpExistingFileName,String lpNewFileName,Long bFailIfExists  &&声明API函数CopyFile
  messagebox(str(WNetAddConnection(′xjserver\bak′,′g:′)))  &&建立连接
  messagebox(str(CopyFile)(″c:\config.sys″,″g:\config.sys″,1)))  &&拷贝文件,如果目录文件存在,则覆盖。
  messagebox(str(WNetCancelConnection(′g:′,1)))  &&断开连接
  set esca on
  End Connect.prg
  程序中利用messagebox函数显示返回信息。