for automating Windows applications built on 'general' frameworks (Win32, .NET Windows Forms, WPF, Metro UI), you might try UIAutomationSpy (the part of UIAutomation tools from http://UIAutomation.CodePlex.com). UIAutomationSpy generates code that is relatively easy to be tailored in any way.
The tools are based on Microsoft UI Automation (that is part of .NET since 3.0) and Win32 API, therefore things like Qt and Java are beyond of the scope tools' possibilities. The underlying language is PowerShell that is easy to learn and use, lessens the volume of code you should write up, and, what's is appreciable, the tools have been created with testing needs in mind by people who have used many paid tools of such kind. There is also the support forum at the project site, and the blog with samples: http://SoftwareTestingUsingPowerShell.com.
Alternatively, consider using the following kaleidoscope of test tools:
wasp (codeplex) - the tool is easy to use, but there is no recorder