Das funktioniert aber nur in einem separaten Thread, weil das modale Fenster ja den aufrufenden Thread blockiert.
Nein, es wird nur die Prozedur blockiert, aus der der Aufruf passierte. Es werden aber weiterhin Messages usw. im selben Thread verarbeitet. Man kann also problemlos in Timern oder anderen Windows Messages weiterarbeiten. (Sonst könnte das modale Fenster ja auch nicht mehr neu gezeichnet werden und würde nicht auf Eingaben reagieren können.)
Zum Thema:
In Screen.SaveFocusedList findest du die modalen Formulare wobei an Position 0 das zuletzt angezeigte steht.