注册 登录
编程论坛 VFP论坛

如何关闭由ShellExecute采用默认方式打开的pdf文件

wabc327 发布于 2023-07-26 13:18, 1290 次点击
如何关闭由ShellExecute采用默认方式打开的pdf文件,比如默认方式Adobe Reader9.0打开的PDF或者默认方式360浏览器打开的PDF文件。本人想实现由服务器拷贝过来的pdf,经过“打开”、“关闭”,最后删除不留痕迹,这样是为了不直接打开服务器的pdf,避免暴露路径信息或网址,请各位朋友帮忙指点!!!
19 回复
#2
yiyanxiyin2023-07-26 14:59
这样是不行的, 装个抓包工具就能跟踪到你的url
#3
wabc3272023-07-26 15:15
回复 2楼 yiyanxiyin
大师:有什么解决办法么,给个思路,最好能够给个实例。
#4
yiyanxiyin2023-07-26 15:22
服务器上url重写,带上时间戳, 根据时间设置过期时间, 即使得到url过时也打不开

你还可以加上身份认证, 认证通过的才能打开指定文件
#5
wabc3272023-07-26 16:23
回复 4楼 yiyanxiyin
大师朋友:你确定能在vfp6.0上实现你所说的这几项功能么,本人才疏学浅,愿闻其详。能否给个实例学习一下呢。
另外咨询一个问题,vpf怎样关闭ShellExecute()以“默认打开方式”打开的pdf文件。
#6
my23182023-07-26 19:30
没啥用,自己打开了,另存为,你没法控制。既然可以看,有的是方法保存文件内容,如截屏拍照。
#7
wabc3272023-07-26 22:00
回复 6楼 my2318
我是不想让客户端产生pdf垃圾文件,用完就删除,如果客户另存为……属个人行为不做处理。关闭pdf文件就是为了能删除pdf文件,把所有查看过的文件都清理干净,这样就不会不断产生垃圾文件,相当于用了缓存,又清理了缓存。 (打开一个新的pdf文件,删除原打开的pdf“条件是必须先关闭该文件才能删除啊”,实现永久都是打开一个pdf,最后关闭表单后删除最后一个打开的pdf文件)

[此贴子已经被作者于2023-7-26 22:13编辑过]

#8
吹水佬2023-07-27 00:26
调用设置的默认外部程序来打开PDF就不好说了,最多也只能控制关闭默认打开PDF的应用程序进程。
至于用户在启动默认打开PDF的应用程序后,她还可以打开其他文件,到底她打开那些PDF不好控制。
#9
wabc3272023-07-27 06:31
回复 8楼 吹水佬
很荣幸能得到您的解答,我主要想解决的问题是:因为从服务器直接打开pdf文件会暴露服务器地址,所以想到了拷到本地打开,但拷贝到本地就会给客户端建立很多临时pdf文件,这些文件我想在程序运行中“新打开下一个PDF后关闭并删除上一个打开过的PDF,因为创建客户端本地PDF文件时,是有文件名的,所以删除哪个文件是知道的,就是不知道怎样关闭已打开的PDF文件”,吹水佬老师,您费点心帮忙解决一下呗,根据您的经验如有更好的方案那就更好了。谢谢!
#10
吹水佬2023-07-27 09:37
自己下载后才打开的,用完怎样删除自己不清楚吗,下载时存放在哪就在哪动手。


#11
yiyanxiyin2023-07-27 10:16
在vfp里面关闭打开pdf的进程, 可以使用windows api
#12
wabc3272023-07-27 10:19
回复 11楼 yiyanxiyin
给个简单的实例可以么 多谢!
#13
wabc3272023-07-27 10:23
回复 10楼 吹水佬
你的意思我明白,关键是客户端用默认程序打开了这个pdf文件,不关闭怎么删除啊,我需要用vfp关闭这个文件并把它删除,然后再打开下一个pdf,周而复始始终打开的是一个pdf,简单说就是新的来,旧的删除。
#14
吹水佬2023-07-27 10:33
以下是引用wabc327在2023-7-27 10:23:18的发言:

你的意思我明白,关键是客户端用默认程序打开了这个pdf文件,不关闭怎么删除啊,我需要用vfp关闭这个文件并把它删除,然后再打开下一个pdf,周而复始始终打开的是一个pdf,简单说就是新的来,旧的删除。

只是不想留存为“垃圾”文件,不一定要规定什么时候清除,如:程序启动时、程序关闭时一次全清,或由用户选择手动清除。
#15
wabc3272023-07-27 10:52
回复 14楼 吹水佬
不管是程序启动还是关闭时清理,如果他在vfp中用默认的程序打开的pdf文件没有关闭,这时删除,程序就会报错,这样就需要判断这个pdf是被打开还是已经关闭了,如果pdf文件时打开的就下一次再做删除处理,如果是关闭的就立即执行删除,请问有函数或方法能判断特指的pdf文件是打开还是关闭的么? 请吹水佬老师指教!
#16
吹水佬2023-07-27 11:08
以下是引用wabc327在2023-7-27 10:52:39的发言:

不管是程序启动还是关闭时清理,如果他在vfp中用默认的程序打开的pdf文件没有关闭,这时删除,程序就会报错,这样就需要判断这个pdf是被打开还是已经关闭了,如果pdf文件时打开的就下一次再做删除处理,如果是关闭的就立即执行删除,请问有函数或方法能判断特指的pdf文件是打开还是关闭的么? 请吹水佬老师指教!

不是你的程序启动后调用ShellExecute才打开PDF吗,调用ShellExecute前不存在程序想要打开的PDF吧。
如果用户不是用你的程序打开文件,你是不能控制用户的吧,或者你知道用户用什么程序打开过什么文件吗?
#17
wabc3272023-07-27 11:21
回复 16楼 吹水佬
请给我一个解决方案吧,多谢!


[此贴子已经被作者于2023-7-27 11:33编辑过]

#18
吹水佬2023-07-27 11:44
以下是引用wabc327在2023-7-27 11:21:55的发言:

请给我一个解决方案吧,多谢!

16楼最后有提到,换个角度看就是了。
#19
wabc3272023-07-27 12:42
回复 18楼 吹水佬
能具体说一下么 实在搞不懂  给几条语句学习一下呗
#20
吹水佬2023-07-28 14:19
以下是引用wabc327在2023-7-27 12:42:58的发言:

能具体说一下么 实在搞不懂  给几条语句学习一下呗

其实我也搞不懂,你为什么要这样去做。
在windows网络应用,连接地址是公开的。
windows本身就有“资源监视器”
只有本站会员才能查看附件,请 登录

1