Use System.Windows.Automation in Unity

Hello, the Unity community! I am developing an application that requires the detection of any focus changes such as a textbox that is clicked or an input field that is focused on the Windows system. I searched for the solution and found System.Windows.Automation might be the answer. To put it simply, my application needs to know any focus changes.

To use System.Windows.Automation, I copy the .DLL files (UIAutomationClient.dll, UIAutomationClientsideProviders.dll, UIAutomationProvider.dll, UIAutomationTypes.dll) from the path “C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0” into the Asset folder.

However, whenever I subscribe to the event using Automation.AddAutomationFocusChangedEventHandler() in my code and hit play. the editor just shuts down without throwing any error or crash message. I tried to make a build and get the same result, and I didn’t find anything in the Player.log.

Have anyone tried using System.Windows.Automation in Unity successfully? If this namespace is not working on Unity, is there any way that I can achieve the same thing (to subscribe to some events so that my application knows there is a focus change)? Thanks a lot and have a good day.

private void Start()
{
    var focusHandler = new AutomationFocusChangedEventHandler(OnFocusChange);
    Automation.AddAutomationFocusChangedEventHandler(focusHandler);
}

private void OnFocusChange(object src, AutomationFocusChangedEventArgs e)
{
    throw new System.NotImplementedException();
}

I tested this on another machine and the Unity crashes. Here are the screenshots I got:

153507-2020-03-02-17-44-18.png

153508-2020-03-02-17-45-24.png

I still don’t know why this would happen. Is Unity not working with System.Windows.Automation?