See the question and my original answer on StackOverflow

No, there's nothing that can marshal WPF elements (especially underlying native elements such as graphic resources, images, etc.) across processes, and UI Automation works by definition across processes.

If you own the target application, you can dramatically increase its "UIAutomation-ness" if you create AutomationPeers specific for your app.

Otherwise, the snoop way (process injection) is the only way (but has a lot of drawbacks, including security issues).