**TestStack White**: (partial open-source)

> [White][1] is an open-source framework for automating rich client
> applications based on Win32, WinForms, WPF, Silverlight and SWT (Java)
> platforms. It is .NET based and does not require the use of any
> proprietary scripting languages. Tests/automation programs using White
> can be written with whatever .NET language, IDE and tools you are
> already using. White provides a consistent object-oriented API, hiding
> the complexity of [Microsoft's UIAutomation library][2] (on which
> White is based) and windows messages.

With the free [Visual Studio Express][3] you can create automated tests with the .Net framework. See my example console C# app code to automate notepad.exe below:

<!-- language: lang-cs -->

	using System;
	using TestStack.White;
	using TestStack.White.InputDevices;
	using TestStack.White.UIItems.Finders;
	using TestStack.White.UIItems.MenuItems;
	using TestStack.White.UIItems.WindowItems;

	namespace WhiteTest
	{
		class Program {
			static void Main(string[] args) {
				Tests tests = new Tests();
				tests.Notepad();
			}
		}

		class Tests {
			public void Notepad() {
                // Arrange
				Application app = Application.Launch("notepad.exe");
				Window window = app.GetWindow("Untitled - Notepad");

				// Act
				var box = window.Get(SearchCriteria.ByClassName("Edit"));
				Keyboard.Instance.Send("test", box);

				window.MenuBar.MenuItem("File", "Save As...").Click();
				var filename = window.Get(SearchCriteria.ByClassName("Edit"));
				Keyboard.Instance.Send(DateTime.Now.ToString("yyyyMMddHHmmssffff") + "test.txt", filename);
				window.Get(SearchCriteria.ByText("Save")).Click();
				
				app.Kill();
				
				// Assert 
                //  file is created in Documents folder
			}
		}
	}


  [1]: https://github.com/TestStack/White
  [2]: http://msdn.microsoft.com/en-us/library/ms753107(v=vs.110).aspx
  [3]: http://www.visualstudio.com/en-us/products/visual-studio-express-vs.aspx