레지스트리 모니터링(Delphi)

레지스트리 모니터링(Delphi)

사용방법

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 : 명령어 입력

// WatchSub : 하위도 모니터링 할 것인가?

RegistryMonitor(RootKey, Key, Proc, WatchSub);

Share this post