title: What's a good, if any, .NET Windows automation library?
body: <p>I'm looking for a library that can be used in native .NET code, just like any .NET assembly. The purpose of the library must be to automate Windows (push a button, select a window, send keys, record &amp; playback, that sort of thing).</p>
  
  <p>So: the library is supposed to be used natively in .NET, but the automation itself must be able to target any native or .NET Windows application that can receive user input.</p>
  
  <hr>
  
  <p>Suggestions so far:</p>
  
  <ul>
  <li><a href="https://stackoverflow.com/questions/2052915/whats-a-good-if-any-net-windows-automation-library/2052978#2052978">benPearce suggested AutoIt</a>. It has a DLL, which is native Win32 but not native .NET and cannot be used without use of .NET Interop.</li>
  <li><a href="https://stackoverflow.com/questions/2052915/whats-a-good-if-any-net-windows-automation-library/2053153#2053153">Chris Dunaway suggested Global Mouse Keyboard Lib</a>. This came closest, but is not an automation lib. It just helps setting up keyboard and mouse hooks.</li>
  <li><a href="https://stackoverflow.com/questions/2052915/whats-a-good-if-any-net-windows-automation-library/2052959#2052959">pm100 suggested Microsoft's WPF UI Automation</a>. This one is pretty good, albeit that it's not available if you develop in .NET 2.0 and it requires the WPF to be installed on the system. It can, however, automate everything from Win32 apps to HTML in a browser.</li>
  <li><a href="https://stackoverflow.com/questions/2052915/whats-a-good-if-any-net-windows-automation-library/2053015#2053015">JasonTrue suggested WebAI from ArtOfTest</a>. This is a testing framework mainly geared towards browsers and web applications. It is unfortunately not well suitable for use for Windows automation.</li>
  </ul>
  
  <p>If nothing else appears available, I'll probably choose Microsoft's UI Automation and upgrade any projects that require it that are still in .NET 2.0 to .NET 3.5, if possible. But I hope for a more widely applicable automation framework (.NET prior to 2.0 does not need to be supported).</p>