Kilho.net
IT

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 a command

// WatchSub: Whether to monitor subkeys as well

RegistryMonitor(RootKey, Key, Proc, WatchSub);

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *