I've started using Input Simulator and it seems to do exactly what I needed. However, I've found that if I feed the SimulateTextEntry method text too quickly, it will start producing garbage.
I found that dumping data from a DataTable in a foreach loop, the method would print the first 100 or so rows correctly and then everything after that would be gobbledegook (a technical term). I solved this by putting a 50 msec delay after each call
to the method.
I hope this is helpful for anyone else experiencing this issue.