下面是注册表监视函数地声明:
function RegNotifyChangeKeyValue(
hKey : HKEY, // 需要监视地注册表键
bWatchSubtree : LongBool, // 是否监视其子键
dwNotifyFilter : Cardinal, // 监视键变化的类型
hEvent : Cardinal, // 当有变化时所触发的通知事件句柄
fAsynchronous : LongBool // 异步通知事件标志
) : integer;
根据MSDN中对该函数的描述,我们对其参数做一下描述:
hKey --我们所要监视的目标键值句柄,它必须是已经被打开的。要打开一个注册表键可以利用Tregistry 中的OpenKeyReadOnly函数。
dwNotifyFilter ――是一组标志集合,用于标识我们需要监视的变化类型,它们包括:
REG_NOTIFY_CHANGE_NAME – 增加或删除了子键
REG_NOTIFY_CHANGE_ATTRIBUTES – 改变了键的属性
REG_NOTIFY_CHANGE_LAST_SET – 键值发生了改变
REG_NOTIFY_CHANGE_SECURITY -键的安全属性发生了改变
hEvent ――当有变化时所触发的通知事件句柄。我们可以利用SDK函数CreateEvent来创建一个事件。
fAsynchronous ――以异步方式触发事件标志。
现在我们已经对如何利用该函数有了大体的了解:
1.打开需要监视的注册表键
2.创建触发事件
3.调用注册表监视函数,等待事件触发。
如果等待事件触发在主界面中实现,就会造成界面堵塞。一个解决办法就是,等待事件触发在线程中实现。