Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Windows API / MS.NET Framework API (https://www.delphipraxis.net/20-library-windows-api-ms-net-framework-api/)
-   -   Delphi Registryschlüssel überwachen (https://www.delphipraxis.net/64459-registryschluessel-ueberwachen.html)

Matze 3. Mär 2006 21:26


Registryschlüssel überwachen
 
Luckie zeight mit dem Code hier wie es möglich ist, bestimmte Schlüssel in der Registry auf Änderungen zu überprüfen. Dies ermöglicht die API-Funktion RegNotifyChangeKeyValue.

Delphi-Quellcode:
type
  TThreadParams = packed record
    Root: HKEY;
    Key: String[255];
  end;
  PThreadParams = ^TThreadParams;

function WatchRegKey(Root: HKEY; Key: String): DWORD;
var
  err: DWORD;
  hEvent: THandle;
  hndlkey: HKEY;
begin
  hEvent := CreateEvent(nil, False, False, nil);
  if hEvent <> 0 then
  begin
    err := RegConnectRegistry(nil, Root, hndlkey);
    if err = 0 then
    begin
      err := RegOpenKeyEx(hndlkey, PChar(Key), 0, KEY_NOTIFY, hndlkey);
      if err = 0 then
      begin
        err := RegNotifyChangeKeyValue(hndlkey, False, REG_NOTIFY_CHANGE_LAST_SET, hEvent, True);
        case WaitForSingleObject(hEvent, INFINITE) of
          WAIT_OBJECT_0: ShowMessage('Kuckuck');
        end;
      end;
    end;
  end
  else
    err := GetLastError;
  result := err;
end;

function Thread(p: PThreadParams): Integer;
var
  Root: HKEY;
  Key: String;
begin
  Root := p.Root;
  Key := p.Key;

  WatchRegKey(Root, Key);

  Dispose(p);

  result := 0;
end;
Hier ein Beispielaufruf:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  ThreadID: Cardinal;
  ThreadParams: PThreadParams;
begin
  New(ThreadParams);
  ThreadParams.Root := HKEY_CURRENT_USER;
  ThreadParams.Key := 'Software\mp\Test';
  CloseHandle(BeginThread(nil, 0, @Thread, ThreadParams, 0, ThreadID));
end;
Sobald ein Schlüssel verändert/angelegt/gelöscht wird, wird dies gemeldet (hier mit "Kuckkuck ;) )


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz