Vb6 检测文件夹的内容是否已更改?

Vb6 检测文件夹的内容是否已更改?,vb6,vbscript,wmi,directory,windows-98,Vb6,Vbscript,Wmi,Directory,Windows 98,条件: Windows 98 SE WMI不可用 我有这样的代码,使用MSScript对VBScript进行类固醇包装编写 do a = files.collectfiles( "c:\userver", "" ) for i = 0 to ubound( a ) f = a(i) if strings.endswith( f, ".usv" ) then d = files.readfilee( f )

条件:

  • Windows 98 SE
  • WMI不可用
我有这样的代码,使用MSScript对VBScript进行类固醇包装编写

do
    a = files.collectfiles( "c:\userver", "" )
    for i = 0 to ubound( a )
        f = a(i)
        if strings.endswith( f, ".usv" ) then
            d = files.readfilee( f )
            on error resume next
            executeglobal d
            nErr = err.number
            sErr = err.description
            on error goto 0
            if nErr <> 0 then
                trace "*** Error " & nErr & ", " & sErr
            end if
            files.deletefile f
        end if
    next
    system.sleep 10
    system.cooperate
loop
do
a=files.collectfiles(“c:\userver”,“”)
对于i=0到ubound(a)
f=a(i)
如果字符串.endswith(f,“.usv”),则
d=文件。readfilee(f)
出错时继续下一步
执行全局d
nErr=err.number
sErr=错误描述
错误转到0
如果nErr为0,则
跟踪“***错误”&nErr&“,”&sErr
如果结束
files.deletef文件
如果结束
下一个
系统睡眠10
合作
环
调用files.collectfiles会导致大量磁盘活动。是否有某种方法可以检测文件夹内容的更改而不实际扫描文件夹中的文件?

定义“文件夹内容的更改”

如果这意味着文件已被添加、删除或重命名,则无论何时发生此类事件,都会更新文件夹的修改时间戳

如果您想知道文件何时被修改,那么您需要读取它们

也就是说,查看您正在尝试执行的操作(扫描文件夹中的新.usv文件,并对其进行处理和删除),然后跟踪文件夹上的时间戳,并在调用collectfiles之前对其进行更新是最好的(请注意,正确的日志记录时间正好是在调用collectfiles之前,否则,如果在collectfiles调用期间或之后立即添加了文件,则可能无法唤醒)。

定义“更改文件夹内容”

如果这意味着文件已被添加、删除或重命名,则无论何时发生此类事件,都会更新文件夹的修改时间戳

如果您想知道文件何时被修改,那么您需要读取它们


也就是说,查看您正在尝试执行的操作(扫描文件夹中的新.usv文件,并对其进行处理和删除),然后跟踪文件夹上的时间戳,并在调用collectfiles之前对其进行更新是最好的(请注意,正确的日志记录时间正好是在调用collectfiles之前,否则,如果在collectfiles调用期间或之后立即添加了文件,则可能无法唤醒).

您特别要求在VB中运行并在win98上运行,对此我没有答案,但MS提供了一个c/win32示例,说明如何在Windows2000+上使用实现此功能。另一件事显然是“”NET在Win98上不起作用/不受支持。我的观点是什么?可能没有简单的解决方案,你必须自己想出一些办法。

你特别要求在VB中运行并在Win98上运行一些东西,对此我没有答案,但MS有一个c/win32示例,说明如何在Windows2000+上实现这一点。另一件事是tNET中的“”显然在Win98上不起作用/不受支持。我的观点是什么?可能没有简单的解决方案,您必须自己想出一些解决方案。

有一个示例,它声称可以在Win95到至少WinXP的所有版本上工作。在Win98下用VB5开发。使用(然后提供的指向以下文档的链接)未记录的SHChangeNotify*函数

这里还有另一个解决方案:


(查看杨国华的第五篇帖子)

有一个示例声称可以使用未记录的SHChangeNotify*函数,在Win98下使用VB5开发的从Win95到至少WinXP的所有版本上运行

这里还有另一个解决方案:


(查看杨国华的第五篇帖子)

链接总是很有帮助的,但是这种好的建议非常棒。非常感谢你的投入。链接总是很有帮助的,但是这种好的建议非常棒。非常感谢你的投入。