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