When running RestoreAllWindowPositions, if a window is frozen/windows access locked then the whole event thread waits forever. This should dispatch a new thread for this process and alert if it times out.
Or maybe wrap SetWindowPos in a thread, so the other processes can continue.
- probably silent error if something goes wrong.