Wenn ich folgende Methode in einem
VCL Thread habe
Delphi-Quellcode:
function TRegNotifier.WatchRegKey(ARoot: HKEY; AKey: string): DWORD;
var
err : DWORD;
hEvent : THandle;
hndlkey : HKEY;
begin
// create event, that is signaled by RegNotifyChangeKeyValue
hEvent := CreateEvent(nil, False, False, nil);
if (hEvent <> 0) and not Terminated then
begin
err := RegConnectRegistry(nil, ARoot, hndlkey);
if (err = 0) and not Terminated then
begin
err := RegOpenKeyEx(hndlkey, PChar(AKey), 0, KEY_NOTIFY, hndlkey);
if (err = 0) and not Terminated then
begin
// start monitoring the specific key
err := RegNotifyChangeKeyValue(hndlkey, True, REG_NOTIFY_CHANGE_LAST_SET, hEvent, False);
if Assigned(OnRegKeyChanged) then
begin
FOnRegKeyChanged(self);
end;
if err <> ERROR_SUCCESS then
begin
if Assigned(OnRegNotifierError) then
FOnRegNotifierError(self, err, SysErrorMessage(err));
Terminate;
end;
RegCloseKey(hndlkey);
end // RegOpenKey
else
begin
if Assigned(OnRegNotifierError) then
FOnRegNotifierError(self, err, SysErrorMessage(err));
Terminate;
end;
end // RegConnectRegistry
else
begin
if Assigned(OnRegNotifierError) then
FOnRegNotifierError(self, err, SysErrorMessage(err));
Terminate;
end;
end
else
err := GetLastError;
// return last error
result := err;
end;
...und der Thread läuft, wird der Prozess beim Schließen des Hauptfensters nicht beendet. Obwohl laut Nico in diesem Posting
http://www.delphipraxis.net/internal...=514575#514575 der Prozess eigentlich terminieren müsste.
Aber warum tut er das bei mir nicht?