注册 登录
编程论坛 VFP论坛

用WINEXEC()映射共享文件夹的问题

LJY6813 发布于 2020-10-21 07:01, 1940 次点击
如果有共享密码,则只有临时映射了
SET TALK OFF
WinExec ([net use Z: \\172.22.1.47  VFP_123456 /user:VFP_FWZ], 0)
SET DEFAULT TO z:\
SET PATH TO Z:\XX
USE JCK.DBF
BROW

运行后显示“在DLL中找不到入口点WINEXEC”

请问各位大侠是怎么回事?
主要目的是想在另外电脑上通过映射文件夹来运行程序,实现网络化运行。如果有其他好办法请赐教。
8 回复
#2
吹水佬2020-10-21 09:50
试试:
DECLARE LONG WinExec IN kernel32 STRING@, LONG
WinExec([net use Z: \\172.22.1.47  VFP_123456 /user:VFP_FWZ], 0)
#3
LJY68132020-10-21 15:40
回复 2楼 吹水佬
现在错误在“SET DEFAULT TO Z:\”处,提示“无效的路径或文件名”。与我运行的系统是WIN10,有关系吗?还是与我共享文件夹设置有关系。
#4
吹水佬2020-10-21 15:48
回复 3楼 LJY6813
错误提示已经好清楚了
有Z:吗?
#5
LJY68132020-10-21 16:43
回复 4楼 吹水佬
从哪里看有Z:没有?
#6
LJY68132020-10-21 16:48
回复 4楼 吹水佬
我的电脑里没有显示盘符Z:
#7
LJY68132020-10-22 17:06
回复 6楼 LJY6813
已经解决了,我的电脑里已经显示Z"盘符了,但是文件却也显示有权限。又是一个坎。
#8
whinda2020-11-01 21:51
映射前应该先检测哪些可用,再进行映射,以前项目中有用到,建议用WSH对象来进行操作符合编程思想。请参考。
1.检测可用本地驱动符
2.映射网络文件夹到本地驱动盘符
3.解除映射


程序代码:

**************************:Map network drirectory to a local drive
*NetWork
*Source:\\cg12\***\
*Local: X:\
*usr:huangxia
*psw:hx123

Procedure MapNetDRV
    Lparameters cLocalAddr,cSourceAddr,cUsr,cPsw
    Local oShell As ,nRet
    Try
        oShell=Createobject('')
        oShell.MapNetworkDrive(cLocalAddr,cSourceAddr,.F.,cUsr,cPsw)
    Catch To oException&&'WSH'不存在或网络地址不在
        Messagebox(oException.Message,0,'Hints',5000)
        */暂不处理
    Endtry

    *check the directory
    If Directory(cLocalAddr)
        Return cLocalAddr
    Else
        Return ''
    Endif
Endproc
**
*************************:Unmap network drive
Procedure UnMapNetDRV
    Lparameters cDrv
    Local oshell As Try
        oshell=Createobject('')
        oshell.RemoveNetworkDrive(cDrv)
    Catch To oException&& WSH error encountered or Directory doesn't exists.
        *Messagebox(oException.Message,0,
'Hints',5000)
        */暂不处理
    Endtry
    *check if removed
    If !Directory(cDrv)
        Return 0
    Else
        Return -1
    Endif
Endproc
**
*************************:Get an available local drive identifier
Procedure AvailableDRV
    Declare Integer GetLogicalDriveStrings In kernel32 Intege nBufferLength,String @ lpBuffer
    Local nalphabet,cDrv,cDrvFree
    cDrv=Replicate(" ",108)&&26*4=104
    If GetLogicalDriveStrings(108,@cDrv)#0&&0则出错
        nalphabet=65+2&&从
'C:'开始
        Do While .T.
            If !Chr(nalphabet)$cDrv
                Clear Dlls
'GetLogicalDriveStrings'
                Return Chr(nalphabet)+
':'
            Endif
            nalphabet=nalphabet+1
        Enddo
    Else
        *err
        Clear Dlls
'GetLogicalDriveStrings'
        Return ""
    Endif
Endproc
*////////////////////////////////////////////////////////////////////////////////////////////End of NetWork

#9
foxprosue2021-03-06 09:14
学习
1