It sounds like you're using Control.Text
a lot - this seems like the most likely caller of GetWindowText
.
If you're updating your UI with the results of your simulation every time the simulation makes progress, you may well be able to improve the performance significantly just by rate-limiting the updates (e.g. just update 5 times per second).