标题:请教制作文件管理软件的思路
只看楼主
sych
Rank: 3Rank: 3
等 级:论坛游侠
威 望:6
帖 子:179
专家分:183
注 册:2019-10-11
得分:3 
如果再来个要求,打开后不能随意复制保存,难度又增加一级
2022-01-26 14:38
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
以下是引用fanjinyu9108在2022-1-26 13:17:55的发言:

吹水佬版主,您的方法我暂时不去验证,我测试了laowan001版主的方法,通过了,但是又遇到一个问题,领导要求读取文件时能否不存盘到本地,直接打开?怎么实现?急求laowan001版主

领导的这个要求有点难为人了,试想就算是不保存到本地,那你还要防止“另存为”吧,就算这个也防住了,是不是还要防止阅读的人拍照呢,
是不是有点掩耳盗铃的意思
2022-01-26 14:44
sych
Rank: 3Rank: 3
等 级:论坛游侠
威 望:6
帖 子:179
专家分:183
注 册:2019-10-11
得分:0 
领导不花钱哪有资格提要求?
2022-01-26 14:45
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用fanjinyu9108在2022-1-26 13:17:55的发言:

领导要求读取文件时能否不存盘到本地

F/S就不用考虑了,因其对远端视同本地。
2022-01-26 15:31
sych
Rank: 3Rank: 3
等 级:论坛游侠
威 望:6
帖 子:179
专家分:183
注 册:2019-10-11
得分:0 
可以转换成图片,内存加载
2022-01-26 15:56
sych
Rank: 3Rank: 3
等 级:论坛游侠
威 望:6
帖 子:179
专家分:183
注 册:2019-10-11
得分:0 
再加个水印
2022-01-26 16:15
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:644
专家分:20
注 册:2014-1-16
得分:0 
好吧,这样也可以了,那能否退而求其次,在文件保存后再直接打开,请问用什么命令?
2022-01-26 17:37
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
看看这样能否满足要求
主机IP:192.168.1.7
主机名:abcd
主机密码:1234
共享名:temp
共享文件:test.txt
共享权限:读写
程序代码:
DECLARE long _strdup IN msvcrt as apiStrdup string@
DECLARE long free    IN msvcrt as apiFree long
DECLARE long WNetAddConnection2 IN mpr as apiWNetAddConnection2 string@,string@,string@,long
DECLARE long WNetCancelConnection2 IN mpr as apiWNetCancelConnection2 string@,long,long

cRemoteName = "\\192.168.1.7\temp"
IF myNetConnect(cRemoteName, "abcd", "1234")
    MODIFY FILE (cRemoteName+"\test.txt")
    apiWNetCancelConnection2(cRemoteName, 1, 1)
ENDIF
CLEAR ALL 
RETURN

FUNCTION myNetConnect(cRemoteName, cUserName, cPassWord)
    LOCAL tNR, nRet, pRemoteName
    pRemoteName = apiStrdup(cRemoteName)
    tNR = REPLICATE(0h00,4) + BINTOC(1,"4RS") + REPLICATE(0h00,12);
        + BINTOC(pRemoteName,"4RS") + REPLICATE(0h00,8)
    nRet = apiWNetAddConnection2(@tNR, cPassWord, cUserName, 1)
    IF nRet == 1219
        apiWNetCancelConnection2(cRemoteName, 1, 1)
        nRet = apiWNetAddConnection2(@stNR, cPassWord, cUserName, 1)
    ENDIF
    apiFree(pRemoteName)
    IF nRet != 0
        MESSAGEBOX("连接失败:"+TRANSFORM(nRet), "提示")
    ENDIF
    RETURN (nRet == 0)
ENDFUNC





[此贴子已经被作者于2022-1-26 18:51编辑过]

2022-01-26 18:50
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:644
专家分:20
注 册:2014-1-16
得分:0 
吹水佬版主,您写的代码是直接存储文件在文件夹的方式,这种方式在打开的时候需要拷贝文件到本地吗?说来惭愧,使用VFP有十多年了,居然版主写的程序看不懂。如果不需要拷贝,那就可能涉及共享打开,那么,假如是EXCEL文件,能允许多人同时打开吗?当然,我只需要浏览就可以了,不需要编辑,也不允许编辑。
2022-01-26 19:56
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 19楼 fanjinyu9108
代码可以放到任何客户机,打开的文件是服务机的共享文件 \\192.168.1.7\temp\test.txt,不需要拷贝到本地。
示例用到 MODIFY FILE 命令,需要写权限。
用EXCEL可以只读,假设有文件 \\192.168.1.7\temp\Book1.xls
将 MODIFY FILE (cRemoteName+"\test.txt") 这句改为下面几句:
    oExcel = CREATEOBJECT("Excel.Application")
    oExcel.DisplayAlerts = 0
    oExcel.WorkBooks.Open(cRemoteName+"\Book1.xls")
    oExcel.Visible = 1
2022-01-26 20:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-508228-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.220757 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved