Showmessage('CreateEvent failed.'); exit; end; if RegOpenKeyEx( HKEY_CURRENT_USER, //跟键 'Software', //子键 0, //reserved KEY_NOTIFY, //监视用 hKeyx //保存句柄 ) <> ERROR_SUCCESS then begin CloseHandle( hNotify ); Showmessage('RegOpenKeyEx failed.'); exit; end; if RegNotifyChangeKeyValue( hKeyx, //监视子键句柄 TRUE, //监视此项的子键 REG_NOTIFY_CHANGE_NAME or REG_NOTIFY_CHANGE_LAST_SET, hNotify, //接受注册表变化事件的事件对象句柄 TRUE //注册表变化前报告 ) <> ERROR_SUCCESS then begin CloseHandle( hNotify ); RegCloseKey( hKeyx ); Showmessage('RegNotifyChangeKeyValue failed'); exit; end; dwRes := WaitForSingleObject( hNotify, 60 * 1000 ); //监视一分钟 if dwRes = 0 then Showmessage( 'Registry will be changed.' ); CloseHandle( hNotify ); RegCloseKey( hKeyx ); end; 要注意的是,API: WaitForSingleObject要等到注册表变化事件发生或者超时才会返回,在此期间我们的程序将失去响应。解决的办法是新建一个线程,在新线程中监视注册表。 对注册表进行扫描要用到另外两个API: RegEnumKey和RegEnumValue。 LONG RegEnumKey( HKEY hKey, // 要扫描的注册表项目句柄 DWORD dwIndex, // 要扫描的subkey序号 LPTSTR lpName, // 要扫描的subkey名称 |
正在阅读:Delphi实现对注册表的监视和扫描Delphi实现对注册表的监视和扫描
2004-03-08 14:55
出处:CSDN
责任编辑:linjixiong
键盘也能翻页,试试“← →”键