如何判断当前打开的WORD或WPS文件已经关闭?
2008-07-25 23:49
393 查看
在大多数应用中都要知道从页面打开的Word或WPS文件是否已经关闭,通常的方法有以下几种:
方法一:
由于当前打开的文件是独占模式打开的,所以可以使用移动文件的方法进行判断,如:
将文件从当前文件夹移动到当前文件夹如果出错则改文件在使用,判断结果为当前文件没有关闭,但是这种方法的判断不一定正确,如果有一个WORD或WPS进行在后台运行,而且它也在用这个文件那么这种方法无疑是会有问题的。
方法二:
使用系统函数进行判断用windowsAPI进行判断,具体思路可以获取当前打开窗口的句柄,判断这个句柄是否存在来进行判断,但是这种方法也会有一定的缺陷。
方法三:
使用这种方式的思路是不直接对文件进行判断而是采用间接的方式进行判断,使用WORD或WPS插件开发方式,开发一个关闭状态写入插件。该插件的功能是如果当前关闭的文件是要进行判断的文件则在关闭文件的时候将该状态写入到一个XML状态文件中如:
改文件的信息可以如下:
<?xml version="1.0" encoding="UTF-8"?>
<FileInfo>
<File>
<FileName>C:/Documents and Settings/Administrator/桌面test1.doc</FileName>
<IsClose>false</IsClose>
<IsSaveAs>false</IsSaveAs>
</File>
<File>
<FileName>C:/Documents and Settings/Administrator/桌面/test2.wps</FileName>
<IsClose>True</IsClose>
<IsSaveAs>false</IsSaveAs>
</File>
</FileInfo>
其中红色部分为当前文件是否关闭的状态值,在控件调用部分可以使用一个计时器进行读取这个状态,直到关闭。
其中WPS或WORD插件的主要功能就是在关闭的时候通过Application.FullName和当前XML状态文件中的FileName进行对比如果文件名和路径相同则将改对应的IsClose属性设置为True.这时候控件部分在读取这个值的时候就会判断到这个文件已经关闭了从而进行下一步的处理。
在这个状态文件中大家可能看到文件名FileName的写入使用的是绝对路径,因为如果只是写入文件名判断会出错:如,我们要判断的是C:/1.wps文件是否已经关闭而现在又打开D:/1.wps
,很明显在只有文件名记录的情况下,这种上述这种情况会出错,所以采用了绝对路径和文件名的判断这样判断会更准确一些。
我个人还是比较看好第三种方法,原因是这种方式将需要判断的文件和判断方法进行分离,使用插件效果会较好。
具体代码就不写在这儿了!!
方法一:
由于当前打开的文件是独占模式打开的,所以可以使用移动文件的方法进行判断,如:
将文件从当前文件夹移动到当前文件夹如果出错则改文件在使用,判断结果为当前文件没有关闭,但是这种方法的判断不一定正确,如果有一个WORD或WPS进行在后台运行,而且它也在用这个文件那么这种方法无疑是会有问题的。
方法二:
使用系统函数进行判断用windowsAPI进行判断,具体思路可以获取当前打开窗口的句柄,判断这个句柄是否存在来进行判断,但是这种方法也会有一定的缺陷。
方法三:
使用这种方式的思路是不直接对文件进行判断而是采用间接的方式进行判断,使用WORD或WPS插件开发方式,开发一个关闭状态写入插件。该插件的功能是如果当前关闭的文件是要进行判断的文件则在关闭文件的时候将该状态写入到一个XML状态文件中如:
改文件的信息可以如下:
<?xml version="1.0" encoding="UTF-8"?>
<FileInfo>
<File>
<FileName>C:/Documents and Settings/Administrator/桌面test1.doc</FileName>
<IsClose>false</IsClose>
<IsSaveAs>false</IsSaveAs>
</File>
<File>
<FileName>C:/Documents and Settings/Administrator/桌面/test2.wps</FileName>
<IsClose>True</IsClose>
<IsSaveAs>false</IsSaveAs>
</File>
</FileInfo>
其中红色部分为当前文件是否关闭的状态值,在控件调用部分可以使用一个计时器进行读取这个状态,直到关闭。
其中WPS或WORD插件的主要功能就是在关闭的时候通过Application.FullName和当前XML状态文件中的FileName进行对比如果文件名和路径相同则将改对应的IsClose属性设置为True.这时候控件部分在读取这个值的时候就会判断到这个文件已经关闭了从而进行下一步的处理。
在这个状态文件中大家可能看到文件名FileName的写入使用的是绝对路径,因为如果只是写入文件名判断会出错:如,我们要判断的是C:/1.wps文件是否已经关闭而现在又打开D:/1.wps
,很明显在只有文件名记录的情况下,这种上述这种情况会出错,所以采用了绝对路径和文件名的判断这样判断会更准确一些。
我个人还是比较看好第三种方法,原因是这种方式将需要判断的文件和判断方法进行分离,使用插件效果会较好。
具体代码就不写在这儿了!!
相关文章推荐
- 关于文件结构体FILE中的成员,以及如何通过文件句柄判断文件是打开还是关闭状态
- iOS 里面如何使用第三方应用程序打开自己的文件,调用wps其他应用打开当前应用里面的的ppt doc xls
- 安卓开发调用第三方应用(如WPS)打开文档(比如Word),如何设置文件只读,不能被修改?
- 判断当前文件是否打开/关闭的源码
- C语言文件操作 fopen, fclose, mkdir(打开关闭文件,建文件夹,判断文件是否存在可读或可写)
- 获取工程下的路径和判断一个文件是否已经被打开
- Excel操作Bug引出的问题:如何判断文件是否被占用、打开
- C语言文件操作 fopen, fclose, mkdir(打开关闭文件,建文件夹,判断文件是否存在可读或可写)
- :如何用C#在Asp.net中实现打开新网页而不关闭当前页
- C语言文件操作 fopen, fclose, mkdir(打开关闭文件,建文件夹,判断文件是否存在可读或可写)
- JS如何判断一个页面是否已经打开?
- 打开资源视图时-提示在另一个编辑器中打开,但是已经关闭所有的打开文件还是这样
- 前端设计js+Tab切换可关闭+添加并自动判断是否已打开自动切换当前状态
- Mac OS X 下 Word VBA 宏 - 如何在 Word 里打开 Excel 文件
- xp 已经word排版的文件 win7打开排版变了(实践有效果)
- vs visual studio 2015中如何在当前的项目管理器中打开文件?如何打开指定的方法名称,如何显示到指定的方法的那个位置
- c#中如何打开一个新窗口并且 关闭当前的窗口
- PHP文件打开、关闭、写入的判断与执行代码
- Android 打开word,excel,ppt,txt,html等文件有用户选择用何种手机上面已经安装有的工具打开
- 如何打开受保护的WORD文件