Delphi自带的TRegistry类只能实现注册表的基本操作,如果我们要实时监视注册表的变化或者扫描注册表特定项下的所有子项,TRegistry类就无能为力了。我啃了半天SDK,终于实现了Delphi对注册表的监视与扫描,不敢独享,拿来献给广大的Delphi爱好者。 监视注册表相关项的改变要用到一个API:RegNotifyChangeKeyValue。 LONG RegNotifyChangeKeyValue( HKEY hKey, // 要监视的一个项的句柄 BOOL bWatchSubtree, // 是否监视此项的子键 DWORD dwNotifyFilter, // 监视哪些变化 HANDLE hEvent, // 接受注册表变化事件的事件对象句柄 BOOL fAsynchronous // 注册表变化前报告还是注册表变化后才报告 ); 注意上面的hEvent是接受注册表变化事件的事件对象句柄,我们要用API:CreateEvent来创建一个系统事件对象。 HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, // SECURITY_ATTRIBUTES结构 BOOL bManualReset, // 是否自动重置 BOOL bInitialState, // 是否设置初始状态 LPCTSTR lpName // 事件对象的名称 ); 新建一个工程,添加一个ListBox,两个Button。 //先写个监视注册表的例子 //监视HKEY_CURRENT_USER\Software项下所有子键 procedure TForm1.Button1Click(Sender: TObject); var hNotify : THandle; hKeyx : HKEY; dwRes : DWORD; begin hNotify := CreateEvent( nil, //不使用SECURITY_ATTRIBUTES结构 FALSE, //不自动重置 TRUE, //设置初始状态 'RegistryNotify' //事件对象的名称 ); if hNotify = 0 then begin |
闁衡偓閹増顥戦柟瀛樺姇婵拷闁哄被鍎冲﹢鍛村绩閹増顥�>>
0正在阅读:Delphi实现对注册表的监视和扫描Delphi实现对注册表的监视和扫描
2004-03-08 14:55
出处:CSDN
责任编辑:linjixiong
键盘也能翻页,试试“← →”键