VFP中通过代码实现映射网络驱动器的三种方法总结

程序设计中,有时需要通过映射网络驱动器的方式实现访问网络上的文件。为避免增加用户的操作负担,需要通过程序代码来完成。

第一种方法:调用API函数:

* 映射网络驱动器
Declare integer WNetAddConnection in "mpr.dll" ;
    string cRemoteName, ;
    string cPassword, ;
    string cLocalName

lcresource = '\\'+IP地址+'\我的共享文件夹'
lcpassword = ""
lcdriveletter = "Z:"
lnretu = WNetAddConnection(lcresource, lcpassword, lcdriveletter)
IF lnretu == 0 then
    vmess="成功映射[Z:]驱动器"
ELSE
    vmess='映射失败。'
endif
=messagebox(vmess)
 

* 断开网络映射
Declare integer WNetCancelConnection in "mpr.dll" ;
    string cName, ;
    integer nForce
lcname  = "Z:"
lnforce = 0    && = 1 为强制断开, 即使文件是打开的
lnretu = WNetCancelConnection(lcname, lnforce)
=messagebox( iif(lnretu = 0, "成功删除驱动器[Z:]映射", '断开失败。') )
 

第二种方法:调用myFll的ShareMapDrive函数

MyFll是专为Microsoft Visual FoxPro设计的扩展库。其中的ShareMapDrive函数可方便的实现映射网络驱动器。代码示例如下:

SET LIBRARY TO myFll.fll
lcresource = '\\'+IP地址+'\我的共享文件夹'
lnretu=ShareMapDrive(lcresource,"Z:")
IF lnretu == 0 then
    vmess="成功映射[X:]驱动器"
ELSE
    vmess='映射失败。'
ENDIF
=messagebox(vmess)

实践中,上述两种方法在大部分场景能成功映射,但在某些电脑上发现有时不能成功(win7、win10等系统环境不同的情形下测试)。此时,试着在不成功的电脑上执行net use命令,竟然能成功映射,说明应该不是系统的问题,因此决定换用net use命令,以适应不同的应用环境。但需要解决弹出命令提示符窗口的问题,这可通过调用API的WinExec函数来实现。

第三种方法:调用API的WinExec函数执行DOS命令net use。代码示例如下:

DECLARE INTEGER WinExec IN "kernel32" STRING,INTEGER
lcresource = '\\'+IP地址+'\我的共享文件夹'
vcode="net use X: "+lcresource
=winexec(vcode,0)

其中的第二个参数0为静默执行,不弹出cmd窗口。其他值为:1默认窗口,2最小化,3最大化。
 

在映射驱动器之前,需要设置共享文件夹。方法步骤也一并记录在此:在网络和共享中心,启用“网络发现”、“文件和打印机共享”、“公用文件夹共享”。此外需要将“密码保护的共享”部分勾选“关闭密码保护共享”选项,还要添加everyone,并检查防火墙。

以上代码在VFP9中验证通过。其他语言可参考。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值