Tron
Simulates user intervention for otherwise unscriptable applications
...It can be used to write automated tests for user interfaces or to ease repetitive jobs with applications which do not support scripting natively. It has a modular design which allows it to be extended easily and is not tied to any particular scripting or programming language.