在大多数应用中都要知道从页面打开的Word或WPS文件是否已经关闭,通常的方法有以下几种:
方法一:
由于当前打开的文件是独占模式打开的( it外包 ),所以可以使用移动文件的方法进行判断,如:
将文件从当前文件夹移动到当前文件夹如果出错则改文件在使用,判断结果为当前文件没有关闭,但是这种方法的判断不一定正确,如果有一个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
,很明显在只有文件名记录的情况下,这种上述这种情况会出错( 服务器维护 ),所以采用了绝对路径和文件名的判断这样判断会更准确一些。
我个人还是比较看好第三种方法,原因是这种方式将需要判断的文件和判断方法进行分离,使用插件效果会较好。
具体代码就不写在这儿了!!
相关文章