Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共3 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:关于文件监视

1楼
fvcfox 发表于:2024/8/20 14:30:00
在文件监视,设置D:\aa
FileChanged发现一点问题
对EXCEL 97-2003的文件修改会执行,但对其他版本生成EXCEL的文件修改没执行。还有WORD的文件也不执行

2楼
有点蓝 发表于:2024/8/20 15:41:00
这种没有办法,新版office文件比较特殊,理论上就是一个压缩包,把后缀名改为zip就可以看出来。

跟踪xlsx文件的使用就可以看到,首先文件打开后,会创建一些隐藏的临时文件,然后后续的操作都是先对临时文件进行处理,然后在使用过程中execl进程会一直锁定这些文件,导致其它程序无法使用,也就无法判断。

下面是一些操作记录,可以看到保存时操作的是一些临时文件,而文件名称都是随机值,没有办法判断原来是什么文件
FileCreated=D:\aa\test.xlsx '新建一个文件时触发
FileCreated=D:\aa\~$test.xlsx '打开文件时触发
FileDeleted=D:\aa\F4D08871.tmp '保存时触发
FileCreated=D:\aa\70526340 '保存时触发
3楼
fvcfox 发表于:2024/8/20 16:09:00
目前我是使用如下方法判断文件的修改情况的,但有个缺点就是占内存
If DataTables("dbupdate").DataRows.Count > 0 Then
            For Each dr As DataRow In DataTables("dbupdate").DataRows 
                System.Threading.Thread.Sleep(500)
                Dim tb As Table = Tables(dr("所在表"))
                Dim ifo As New FileInfo(dr("nf"))
                dr("更新时间") = cstr(ifo.LastWriteTime)
                If FileisOpened(dr("nf")) = False Then
                    If FileOpened(dr("nf")) = False Then
                        If dr("更新时间") > dr("登记时间") And dr("不上传") = False Then
                            Try
                                tb.DataTable.ReplaceFor ("文件时间" , CStr(ifo.LastWriteTime), "服务器文件名='" & dr("服务器文件名") & "'")
                                If ftp1.Upload (dr("nf"), dr("类别") & dr("服务器文件名"), True) = True Then
                                    tb.DataTable.ReplaceFor ("不上传" , False , "服务器文件名='" & dr("服务器文件名") & "'")
                                End If
                                dr.Delete
                                DataTables("dbupdate").Save
                            Catch ex As Exception 
                                
                            End Try
                        ElseIf dr("更新时间") = dr("登记时间") Then
                            dr.Delete
                            DataTables("dbupdate").Save
                        End If
                    End If 
                End If
            Next
        Else
            MyTimers("监视flup").Enabled = False
        End if
共3 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .01563 s, 2 queries.