文件监控

c++实现文件监控 c++实现文件监控 #include "stdafx.h" #include "MonitorFile.h" void ShowError(char *pszText) { char szErr[MAX_PATH] = { 0 }; ::wsprintf(szErr, "%s Error[%d]\n", pszText, ::GetLastError()); ::MessageBox(NULL, szErr, "ERROR", MB_OK | MB_ICONERROR); } // 宽字节字符 阅读详情

文件监控有几种方法:FindFirstChangeNotification,ReadDirectoryChangesW,SHChangeNotifyRegister。

Find那个只能监控到文件有变动,但是进一步的信息就没有了,Read好多参数啊,所以我尝试一下用Shell API。

 

Shell在WM和PC下是两种不同的方法,WM下的参数比较简单,一个hwnd用来接受消息,一个SHCHANGENOTIFYENTRY,这个结构也比较简单,就是设置一些需要监控什么消息,监控路径,是否监控子文件夹。

 

相对而言PC下的就比较复杂了

ULONG SHChangeNotifyRegister(      
    HWND hwnd,

    int fSources,     

    LONG fEvents,     

   UINT wMsg,     

   int cEntries,     

  SHChangeNotifyEntry *pfsne );

 

返回值:

一个ID,用于SHChangeNotifyDeregister使用来释放监控

 

参数:

hwnd,用来接受消息的窗口句柄

fSources,One or more of the following values that indicate the type of events for which to receive notifications:

SHCNRF_InterruptLevel等,不过这些都没有定义,需要自己定义的

fEvents,SHCNE_ALLEVENTS等

wMsg,自定义的消息,当文件有修改时,会向窗口传送这个消息

pfsne,结构体

 

下面是使用例子:

 SHChangeNotifyEntry sn = {0};
 sn.fRecursive = TRUE;
 sn.pidl    = 0;

 m_nNotify = SHChangeNotifyRegister( m_hWnd, SHCNRF_InterruptLevel|SHCNRF_ShellLevel,SHCNE_ALLEVENTS, WM_FILE_CHANGE, 1,  &sn );

 

// 当发生变化时,在OnFileChange中处理

LRESULT CNetDlg::OnFileChange( WPARAM wParam, LPARAM lParam )
{
 SHNotifyInfo*   pShellInfo   =   (SHNotifyInfo*)wParam;
 TCHAR szSrc[MAX_PATH] = {0};
 TCHAR szDes[MAX_PATH] = {0};

// 原文件路径

 SHGetPathFromIDList( (LPCITEMIDLIST)pShellInfo->dwItem1, szSrc );

// 目标文件路径
 SHGetPathFromIDList( (LPCITEMIDLIST)pShellInfo->dwItem2, szDes );

 

 switch(lParam)
 {
  case SHCNE_CREATE:
   break;
 }

 return S_OK;
}

 

 

基于STM32L4XX 、HAL库的ATD5984步进电机驱动器驱动程序应用设计 一、简介: ATD5984是一款内部集成了译码器的微特步进电机 驱动器,能使双极步进电机以全、半、1/4、/1/8、1/16 和1/32步进模式工作。步进模式由逻辑输入管脚MSx选 择。其输出驱动能力达到28V±1.6A。 译码器是ATD5984易于使用的关键,通过STEP管脚 输入一个脉冲就可以使电机完成一次步进,省去了相序 表,高频控制线及复杂的编程接口,使其更适于没有复 杂的微处理器或微处理器负担过重的场合。 在步进操作期间,ATD5984的内部电路可以自动 阅读详情

相关推荐

tsmc12:via0的spacing问题(Via0.S.1)

12nm有个via0 grid的概念,除了普通fill外,基本都有via0这一层,这一层需要与via0 grid对齐。手动调整cell的位置比较容易出这个drc,比如修m0po max length drc时。解决方法1: 替换EEQV类型cell,这种类型是专门为了修via0 Grid问题存在的。更多学习内容请关注「拾陆楼」知识星球。解决方法2: 翻转或移动。

m0_61544122的博客 1054

利用Windows的未公开函数SHChangeNotifyRegister实现文件目录操作即时监视程序,

利用Windows的未公开函数SHChangeNotifyRegister实现文件目录操作即时监视程序,可以监视在Explore中的重命名、新建、删除文件或目录....rar

【新】用SHChangeNotifyRegister实现文件监控 - 注释清晰,易拓展封装-易语言

前言: 最近学Windows shell外壳,偶然发现了SHChangeNotifyRegister这个神奇的函数,于是便用它写了个例程。 本帖不少思想来自帖子:未公开Windows API SHChangeNotifyRegister实现文件监控 基本介绍: 在Windows实现文件监控有三种方法,第一种是“虚拟文件系统驱动”方法,如windows 下的filemon,网上有很多关于他的分析。第二种方法是“HOOK API”方法,钩子技术。第三种方法是“消息机制”,从windows的文件通知消息获取系统的文件操作。但是这是文件操作完成以后,才通知的。所以只能进行监视监视,不能进行完全的控制。而消息机制当中,也有三种方法,(1)通过使用“未公开API SHChangeNotifyRegister 实现”;(2)通过 FindFirstChangeNotification 实现;(3)通过 ReadDirectoryChangesW 实现。第(2)(3)种方法只能针对一个在指定目录或子目录下发生的更改符合过滤条件时,进行监视。 而现在,易语言 中大部分消息机制监视文件使用FindFirstChangeNotification或ReadDirectoryChangesW + 线程实现的(例如:文件监控精灵 - 监控目录文件新建删除重命名修改 ),该方法效率较低,而且如果很多文件在短时间内发生变更,则有可能会丢失部分通知,且监视的文件信息有限,所以,我写了一份使用SHChangeNotifyRegister来监视文件的例程。 特性: 代码几乎是全注释,清晰明了: 程序很多命令和常量是翻译自MSDN,规范程度高: 监视多种消息(比如USB接口信息),很多问题一个命令即可解决:

检测文件变化

上一篇讲在Lua文件变化的时候实现自动重载。有2种方式 一、assetpostprocessor ssetPostProcessor是一个编辑器类,一个资源导入的一个管理器,在资源导入之前和之后可以根据导入的资源做一些设置和一些数据的修改,比如网格,纹理的压缩,模型添加组件等。当资源导入之前和之后都会发送通知,可以根据不同的资源类型,在导入之前和之后做不同的处理 public class LuaReLoadProcessor : AssetPostprocessor { protected c.

zhutaorun的博客 921

SHChangeNotifyRegister in Windows CE

BOOL WINAPI SHChangeNotifyRegister(  HWNDhwnd,  SHCHANGENOTIFYENTRY * pshcne);第一个参数需要一个窗口句柄,用CreateWindow()方法可以创建一个窗口(创建窗口前需要调用RegisterClass()方法,在RegisterClass这个参数中需要传入实现我们自己的消息处理函数WindowProc())。第二个参数

netlcx的专栏 1981

SHChangeNotify

SHChangeNotify( SHCNE_DELETE, SHCNF_PATH | SHCNF_FLUSHNOWAIT,       TEXT("C:\\WINDOWS"), NULL ); 运行这条命令时,请打开 C 盘,并确认 WINDOWS 文件夹存在,运行后,保证目瞪口呆,WINDOWS 文件夹竟然不见了,哈哈,别怕,刷新一下又回来了。这只是欺骗而已。这个东西有吓人作用. 原型

wowolook的专栏 1万+

C# 文件监控,任何文件夹或文件修改后 ,如何立即触发监控

一、场景 有时候,我们需要监控文件夹以及文件的变化,然后做出一些业务处理,这里面,最典型的例子,估计前端攻城狮老熟的,就是各种打包了。 那么在C#后端,也会遇到要监控变化的情况。一个文件如何被修改,就会触发什么动作。 二、C#中的文件监控 可以用钩子函数来处理,这种会处理得让你抓狂,一可能是太多消息事件,你头都大,二估计你不是C/C++的程序员,对win32函数本身就不熟,找资料都要你老费劲了。 那么C#中的文件监控还有什么办法呢?C#庞大的类库中,提供了FileSystemWatcher类,该类

C#开发 1万+

FileSystemWatcher文件监控:实时监控文件变化的利器

FileSystemWatcher文件监控:实时监控文件变化的利器 【下载地址】FileSystemWatcher文件监控 FileSystemWatcher 是一款高效的文件监控工具,专为开发者设计,能够实时监控指定目录下的文件变化。无论是文件的创建、修改、删除还是重命名操作,它都能迅速捕捉并通知用户。该工具支持多事件...

gitblog_06725的博客 453

Linux系统中的文件监控

特定文件正在被那些进程操作 特定进程正在操作那些文件 实时监控特定文件一段时间 特定进程在执行过程中会操作哪些文件

知其可为而不为 5648

android之文件监控

https://github.com/dstmath/inotifywait-for-Android.git 工具来进行文件监控,它是利用linux下inotify机制对文件系统进行监控的,我们可以利用它来监控某款APP的文件操作行为,比起利用hook机制来监控文件系统. (1) git clone https://github.com/dstmath/inotifywait-for-And...

一只狍子的博客 4265

java文件监控

实现Java文件监控 一、整体流程 首先,我们需要创建一个Java程序,用于监控指定目录下的文件变化。当目录中的文件新增、修改或删除时,程序需要及时响应并进行相应处理。 下面是整个流程的步骤表格: 步骤 操作 1 创建一个Java项目 2 导入所需的Java IO库 3 监控指定目录下的文件变化 ...

weixin_35181005的博客 299

android+文件监控,Android文件监控FileObserver介绍

在前面的Linux文件系统Inotify机制中介绍了Linux对文件变更监控过程。Android系统在此基础上封装了一个FileObserver类来方便使用Inotify机制。FileObserver是一个抽象类,需要定义子类实现该类的onEvent抽象方法,当被监控文件或者目录发生变更事件时,将回调FileObserver的onEvent()函数来处理文件或目录的变更事件。事件监控过程在F...

weixin_42131890的博客 700

C# FileSystemWatcher文件监控

对于一个需要管理本地文件的应用来说,监控文件的运行及修改状态十分重要,在运行中,我们如何知道文件的基本属性的变化? C#为我们提供了一个文件监控类(FileSystemWatcher),它定义了几个文件操作的事件,当我们对文件操作时便会引起这些事件,通过订阅这些事件,并添加自己的处理程序可实现对文件监控FileSystemWatcher的属性 属性 说明 path 设置要监...

qq_42392388的博客 2306

golang 通过fsnotify监控文件

一、 需要下载的包 go get github.com/fsnotify/fsnotify 二、使用fsnotify监控文件 type Watch struct { Watch *fsnotify.Watcher } func (w *Watch) WatchDir(dir string) { //通过walk来遍历目录下的所有子目录 filepath.Walk(dir, func(p...

lili9415的博客 3437

java 文件监控_Java 文件监控,实时监控文件加载

前段时间设计一个文件自动加载系统模块,功能就像是在Tomcat的webapps目录下发布war包那样,只要一有war包加载进来,tomcat立刻就会去解压这个war包,并把它挂载在tomcat上,供网络访问。我这个程序的思路也正是这样,可以监控某一目录下的文件,包括文件的增加,删除,修改,正在加载,加载成功等事件,使用抽象类和接口方式来编写,要拓展此类,十分容易,当然这个也只是个人粗制滥造的一个小...

weixin_39618806的博客 383

FileSystemWatcher 文件监控

FileSystemWatcher 文件监控 【下载地址】FileSystemWatcher文件监控 FileSystemWatcher 是一款高效的文件监控工具,专为开发者设计,能够实时监控指定目录下的文件变化。无论是文件的创建、修改、删除还是重命名操作,它都能迅速捕捉并通知用户。该工具支持多事件监控,用户可以根据需求...

gitblog_06778的博客 473

文件监控使用教程

做过运维的同学是不是遇到过文件被人恶意修改,且无法查询是谁、什么时间、修改了什么内容、是否可以恢复到原样?致命连问,运维哑口无声,背锅吧,运维! 如果做了备份,那么可以通过备份文件进行恢复,可是!备份的文件完整吗?好吧,运维来背锅,没有校验备份文件完整性。...

吴大锤的专栏 2688

Linux如何监控某个文件夹下文件的实时变化?

Linux如何监控某个文件夹下文件的实时变化? 在 Linux 中,可以使用 inotify 工具来监控文件夹下文件

Kp0fS的草稿纸 2192

auditctl 监控文件修改

设置监控: auditctl  -w /root/dead.letter -p wxa -k "mon_dead" -w 监控文件路径 /root/dead.letter  -p 监控文件筛选 r(读) w(写) x(执行) a(属性改变) -k 筛选字符串,用于查询监控日志 设置了监控后,会在/var/log/audit/audit.log里出现日志。 可以用

csdnhadoop的博客 6955

linux监控文件变化的程序,在 Linux 下监控程序修改文件

工作中, 有时候我们需要知道某个文件是否被修改了, 被哪个程序修改了. Linux 下可以很方便地监控某个文件被修改的记录. 根据目的不同, Linux 下有不同的监视文件文件夹的方案.A. AuditdAuditd 可以很方便监控记录哪些程序和用户对指定文件 (即使不存在) 做的操作.安装 auditd一般发行版软件仓库里都会有 auditd 安装包. 如果默认没有安装, 可以很方便地利用包管...

weixin_35478664的博客 2293

Delphi 12.3控件之AndroidSDK-2525-23.0.53982.0329.zip

Delphi 12.3控件之AndroidSDK-2525-23.0.53982.0329.zip

上一篇: MFC For WinCE不支持的类
下一篇: WMI
Jonason123
博客等级 码龄20年 2粉丝 14原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值