Delphi で特定のレジストリの変更を監視する方法を探していました。about.comで解決策を見つけました:
procedure TRegMonitorThread.Execute;
begin
InitThread; // method omitted here
while not Terminated do
begin
if WaitForSingleObject(FEvent, INFINITE) = WAIT_OBJECT_0 then
begin
fChangeData.RootKey := RootKey;
fChangeData.Key := Key;
SendMessage(Wnd, WM_REGCHANGE, RootKey, LongInt(PChar(Key)));
ResetEvent(FEvent);
RegNotifyChangeKeyValue(FReg.CurrentKey, 1, Filter, FEvent, 1);
end;
end;
end;
私のアプリケーションでは、このスレッドをオンデマンドで開始および停止する必要がありますが、上記のコードではそれが許可されていません。Terminated フラグを設定するだけでは不十分です。
何らかの方法でスレッドに待機を停止するように指示し、必要に応じてスレッドを解放して新しいスレッドを作成するだけで十分です。それを達成するためにこのコードを変更するにはどうすればよいですか?