weshalb ersetzt Du nicht einfach die Zeile
Delphi-Quellcode:
for I := 0 to High(FHandleArray) do
FindNextChangeNotification(FHandleArray[I]);
durch
FindNextChangeNotification(FHandleArray[FWaitStatus - WAIT_OBJECT_0]);
so würdest Du immer nur für das signalisierende ChangeNotification FindNext aufrufen... sollten 2 "gleichzeitig" signalisierend sein, ergäbe dies 2 Schleifendurchgänge hintereinander, da WaitForMultipleObjects immer nur für ein Object den Signaled-Status entfernt (dasjenige, das auch im Return-Value angegeben wurde)...