// AddRootListener - Add a listener for an event whose reference is always the // root and scope is all elements private static void AddRootListener(Tracker idx, Delegate eventCallback, EventListener l) { lock ( _classLock ) { // Add this listener to client-side store of listeners and give the server // a chance to enable accessibility for this event AddListener(AutomationElement.RootElement, eventCallback, l); // Track WinEvents WinEventWrap eventWrapper = _winEventTrackers[(int)idx]; if (eventWrapper == null) { // First time create a WinEvent tracker and start listening AddWinEventListener(idx, GetNewRootTracker(idx)); } else { // Subsequent times just add the callback to the existing WinEvent eventWrapper.AddCallback(eventCallback); } } }