[ahk]检测文件夹内文件的更新
2015-11-10 16:59
471 查看
更新文件会提醒
源代码
源代码
#Persistent SetBatchLines, -1 Process, Priority,, High OnExit, ShutApp WatchFolder := "I:\ahk\MIM_Screenshot" ;"C:\" WatchSubDirs := "1" EventString := "New File,Deleted,Modified,Renamed From,Renamed To" StringSplit, EventArray, EventString, `, DllCall("shlwapi\PathAddBackslashA", UInt, &Watchfolder) CBA_ReadDir := RegisterCallback("ReadDirectoryChanges") SizeOf_FNI := ( 64KB := 1024 * 64 ) VarSetCapacity( FILE_NOTIFY_INFORMATION, SizeOf_FNI, 0 ) PointerFNI := &FILE_NOTIFY_INFORMATION hDir := DllCall( "CreateFile", Str , WatchFolder, UInt, "1", UInt , "7", UInt, 0, UInt, "3", UInt, "1107296256", UInt , 0 ) Loop { nReadLen := 0 hThreadId := 0 hThread := DllCall( "CreateThread", UInt, 0, UInt, 0, UInt, CBA_ReadDir, UInt, 0, UInt,0, UIntP,hThreadId ) Loop { If nReadLen { PointerFNI := &FILE_NOTIFY_INFORMATION Loop { NextEntry := NumGet( PointerFNI + 0 ) Action := NumGet( PointerFNI + 4 ) FileNameLen := NumGet( PointerFNI + 8 ) FileNamePtr := ( PointerFNI + 12 ) Event := EventArray%Action% VarSetCapacity( FileNameANSI, FileNameLen ) DllCall( "WideCharToMultiByte", UInt,0, UInt,0, UInt,FileNamePtr, UInt, FileNameLen, Str, FileNameANSI, UInt,FileNameLen, UInt,0, UInt,0 ) File := SubStr( FileNameANSI, 1, FileNameLen/2 ) FullPath := WatchFolder . File FileGetAttrib, Attr, %FullPath% FormatTime, Time , %A_Now%, HH:mm:ss If !FileExist(FullPath) Tooltip, %Time%`n%Event%`n%File% Else { Loop %FullPath% { FormatTime, TStamp, %A_LoopFileTimeModified%, yyyy-MM-dd HH:mm:ss Tooltip, %Time%`n%Event%`n%File%`n%A_LoopFileSizeKB%`n%TStamp%`n%A_LoopFileAttrib% } } If !NextEntry Break Else PointerFNI += NextEntry } Break } Sleep 100 } DllCall( "TerminateThread", UInt,hThread, UInt,0 ) DllCall( "CloseHandle", UInt,hThread ) } Return ReadDirectoryChanges() { Global hDir,PointerFNI, Sizeof_FNI, WatchSubdirs, nReadlen Return DllCall( "ReadDirectoryChangesW", UInt, hDir, UInt, PointerFNI, UInt, SizeOf_FNI, UInt, WatchSubDirs, UInt, "375", UIntP, nReadLen, UInt, 0, UInt, 0 ) } GuiClose: ShutApp: DllCall( "CloseHandle", UInt,hDir ) DllCall( "TerminateThread", UInt,hThread, UInt,0 ) DllCall( "CloseHandle", UInt,hThread ) ExitApp Return
相关文章推荐
- 使用zabbix监控Nginx活动状态--Part1
- C#获取文件夹及文件的大小与占用空间的方法
- C#实现简单屏幕监控的方法
- 用批处理实现的创建带日期的文件夹的代码
- win2003文件夹权限设置脚本代码
- C#进程监控方法实例分析
- Windows下使用性能监视器监控SqlServer的常见指标
- win2003 服务器 文件夹 权限分配
- PowerShell统计文件夹下文件个数的方法
- C#遍历文件夹后上传文件夹中所有文件错误案例分析
- C#监控文件夹并自动给图片文件打水印的方法
- VBS 显示“选择文件或文件夹”对话框的代码
- C#实现获取文件夹大小的方法
- Zabbix监控Linux主机设置方法
- Zabbix监控交换机设置方法
- C#递归实现显示文件夹及所有文件并计算其大小的方法
- BAT批处理之文件与文件夹操作代码(附xcopy命令详解)
- vbs 列出该目录下所有文件和文件夹的类型,大小,和所有者
- asp修改文件和文件夹的名字的代码
- Shell脚本实现Linux系统和进程资源监控