Registry Monitoring (Delphi)
 
		How to use
procedure RegistryMonitor(RootKey: HKEY; Key: string; Proc: TProc; WatchSub: boolean);
begin
	TThread.CreateAnonymousThread(procedure
	var
		Reg: TRegistry;
		Event: cardinal;
	begin
		Reg := TRegistry.Create;
		Reg.RootKey := RootKey;
		if Reg.OpenKeyReadOnly(Key) then
		begin
			Event := CreateEvent(nil, False, False, nil);
			if Event > 0 then
			begin
				while True do
				begin
					RegNotifyChangeKeyValue(Reg.CurrentKey, WatchSub, REG_NOTIFY_CHANGE_LAST_SET, Event, True);
					if WaitForSingleObject(Event, INFINITE) = WAIT_OBJECT_0 then TThread.Synchronize(TThread.CurrentThread, procedure begin Proc end);
				end;
			end;
		end;
	
		Reg.Free;
	end).Start;
end;
// Proc: Enter command
// WatchSub: Will you monitor the subordinate?
RegistryMonitor(RootKey, Key, Proc, WatchSub);
 
	










 
					
Leave a Reply