示例#1
0
        // AddWinEventListener - add an event callback for a global listener
        private static void AddWinEventListener(Tracker idx, WinEventWrap eventWrapper)
        {
            // make sure we can queue items
            CheckStartCallbackQueueing();

            _winEventTrackers[(int)idx] = eventWrapper;
            _callbackQueue.PostSyncWorkItem(new WinEventQueueItem(eventWrapper, WinEventQueueItem.StartListening));
        }
示例#2
0
        // StopWinEventTracking is called when we just want to quit (RemoveAllListeners)
        private static void StopWinEventTracking()
        {
            int i;

            for (i = 0; i < (int)Tracker.NumEventTrackers; i++)
            {
                WinEventWrap eventWrapper = _winEventTrackers[i];
                if (eventWrapper != null)
                {
                    eventWrapper.StopListening();
                    _winEventTrackers[i] = null;
                }
            }
        }
示例#3
0
        // RemoveWinEventListener - remove an event callback for a global listener
        private static void RemoveWinEventListener(Tracker idx, Delegate eventCallback)
        {
            WinEventWrap eventWrapper = _winEventTrackers[(int)idx];

            if (eventWrapper == null)
            {
                return;
            }

            bool fRemovedLastListener = eventWrapper.RemoveCallback(eventCallback);

            if (fRemovedLastListener)
            {
                _callbackQueue.PostSyncWorkItem(new WinEventQueueItem(eventWrapper, WinEventQueueItem.StopListening));
                _winEventTrackers[(int)idx] = null;

                CheckStopCallbackQueueing();
            }
        }
示例#4
0
        // 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);
                }
            }
        }
示例#5
0
        // AddWinEventListener - add an event callback for a global listener
        private static void AddWinEventListener(Tracker idx, WinEventWrap eventWrapper)
        {
            // make sure we can queue items
            CheckStartCallbackQueueing();

            _winEventTrackers[(int)idx] = eventWrapper;
            _callbackQueue.PostSyncWorkItem(new WinEventQueueItem(eventWrapper, WinEventQueueItem.StartListening));
        }
        //------------------------------------------------------
        //
        //  Constructors
        //
        //------------------------------------------------------
 
        #region Constructors

        internal WinEventQueueItem(WinEventWrap winEventWrap, int state)
        {
            _winEventWrap = winEventWrap;
            _state = state;
        }
        //------------------------------------------------------
        //
        //  Constructors
        //
        //------------------------------------------------------

        #region Constructors

        internal WinEventQueueItem(WinEventWrap winEventWrap, int state)
        {
            _winEventWrap = winEventWrap;
            _state        = state;
        }