Собственно, два вопроса:
1. Я немножко занимаюсь извращениями - пишу тесты для своей программы на fpcunit. С точки зрения теории тестирования это не совсем корректное использование инструмента, но другого у меня все равно нет, а что-то делать надо. В программе появляется модальное окно, которое должен заполнить пользователь. В тестовом окружении я перед вызовом ShowModal создаю дополнительный поток, в котором заполняю поля и жму кнопку. В результате может появиться окно сообщения ShowMessage. Мне его надо из второго потока закрыть. Как - я не знаю. Пробовал найти окно через FindWindow (искал по заголовку. Заголовок окна - это название exe файла программы без ".exe") и послать окну WM_CLOSE - завершается все приложение (у меня есть идеи, почему так происходит, а вот чем лечить - нет идей).
2. Создаю поток, вызываю в нем ShowMessage. Получаю ошибку: "CheckSynchronize called from non-main thread." То есть это вообще никак не сделаешь, или я чего-то не знаю?
В принципе есть решение - переписать все без использования модального окна, и я так и сделаю. Но все равно интересно, вдруг в будущем пригодится.