以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  文件监视器不能返回excel跟word的文件名  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=148742)

--  作者:lxhmax
--  发布时间:2020/4/14 15:20:00
--  文件监视器不能返回excel跟word的文件名
文件监视器不能返回excel跟word的文件名,这个是什么情况?
filechange的代码 MessageBox.Show(e.Name)
文件监视启动代码 
With FileWatcher
    .Path = ProjectPath & "Excel\\报告管理"
    .Delay = 500
    .Enabled = True
End With

我实际想得到的是单纯的文件名,不要包含路径

这个是excel跟word文件修改的提示

图片点击可在新窗口打开查看此主题相关图片如下:图片2.png
图片点击可在新窗口打开查看


下面这个是txt文件的修改提示

图片点击可在新窗口打开查看此主题相关图片如下:图片1.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2020/4/14 15:22:48编辑过]

--  作者:有点蓝
--  发布时间:2020/4/14 17:01:00
--  
参考:http://www.foxtable.com/webhelp/topics/1406.htm
--  作者:lxhmax
--  发布时间:2020/4/15 2:06:00
--  
一样的老师,txt文件能正常返回文件名,excel跟word文件就还是跟之前的截图一样


--  作者:lxhmax
--  发布时间:2020/4/15 2:17:00
--  
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=77316&page=0&move=next

跟这个情况是一样的

--  作者:有点蓝
--  发布时间:2020/4/15 9:23:00
--  
excel跟word文件如果是复制过去的不会有问题。excel跟word文件修改的时候会产生几个临时文件的。这种问题您得找微软。实际上excel跟word文件修改保存会多次触发监视器事件的,空文件、tmp文件、~开头的文件忽略即可


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看


--  作者:lxhmax
--  发布时间:2020/4/15 14:13:00
--  

老师,请问下面这个怎么加上延迟执行的代码?


Public Sub OnCreated(ByVal source As Object, ByVal e As System.IO.FileSystemEventArgs)

\'msgbox("OnChanged" & e.FullPath & "e.ChangeType:" & e.ChangeType.ToString())
End Sub

 

调用和启用:

Dim watcher As new System.IO.FileSystemWatcher()
watcher.Path = "D:\\文件监视器"
watcher.Filter = "*.*"
watcher.IncludeSubdirectories = True
addhandler watcher.Created, addressof OnCreated
watcher.EnableRaisingEvents = True


--  作者:lxhmax
--  发布时间:2020/4/15 14:19:00
--  
老师,还有下面这个问题
这个全局代码有什么问题吗?经常会导致整个程序闪退的

Public Sub OnRenamed(ByVal source As Object, ByVal e As System.IO.RenamedEventArgs)
Dim wj As String = FileSys.GetName(e.FullPath)
Dim lj,mb As String
If wj.Contains(".xlsx") Then
    Dim dr As DataRow = DataTables("bgffjl").SQLFind("[文件名] = \'" & wj & "\'")
    If wj.Contains("测试报告") Then
        mb = "测试报告"
    Else
        mb = "检测报告"
    End If
    lj = ProjectPath & "Excel\\报告管理\\" & mb & "\\" & dr("wtdh") & "\\" & wj
    If dr IsNot Nothing Then
        If CRCCheckFile(lj) <> dr("本地校验码") Then
            If MessageBox.Show("【" & wj & "】报告已修改!是否同步至服务器?" & vbcrlf & "【是】 关闭文件并上传至服务器" & vbcrlf & "【否】 取消本次修改同步操作", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
                ShowAppWindow(wj,5)
                Dim ftp As new ftpclient
                ftp.host="123123123"
                ftp.Account = "123123"
                ftp.password = "123123"
                ftp.UTF8 = True
                ftp.Upload(lj,"\\报表生成文件\\" & mb & "\\"  & dr("wtdh") & "\\" & wj )
                dr("本地校验码") = CRCCheckFile(lj)
                dr("服务器校验码") = CRCCheckFile(lj)
                dr.Save
            End If
        End If
    End If
End If
End Sub

--  作者:有点蓝
--  发布时间:2020/4/15 15:11:00
--  
第三方用法自己学习参考:https://docs.microsoft.com/zh-cn/dotnet/api/system.io.filesystemwatcher?view=netframework-4.8

试试

Public Sub OnRenamed(ByVal source As Object, ByVal e As System.IO.RenamedEventArgs)
Dim wj As String = FileSys.GetName(e.FullPath)
Dim lj,mb As String
If wj.Contains(".xlsx") Then
    Dim dr As DataRow = DataTables("bgffjl").SQLFind("[文件名] = \'" & wj & "\'")
If dr IsNot Nothing Then
    If wj.Contains("测试报告") Then
        mb = "测试报告"
    Else
        mb = "检测报告"
    End If
    lj = ProjectPath & "Excel\\报告管理\\" & mb & "\\" & dr("wtdh") & "\\" & wj
    
        If CRCCheckFile(lj) <> dr("本地校验码") Then
            If MessageBox.Show("【" & wj & "】报告已修改!是否同步至服务器?" & vbcrlf & "【是】 关闭文件并上传至服务器" & vbcrlf & "【否】 取消本次修改同步操作", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
                ShowAppWindow(wj,5)
                Dim ftp As new ftpclient
                ftp.host="123123123"
                ftp.Account = "123123"
                ftp.password = "123123"
                ftp.UTF8 = True
                ftp.Upload(lj,"\\报表生成文件\\" & mb & "\\"  & dr("wtdh") & "\\" & wj )
                dr("本地校验码") = CRCCheckFile(lj)
                dr("服务器校验码") = CRCCheckFile(lj)
                dr.Save
            End If
        End If
    End If
End If
End Sub