Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / UIAutomation / UIAutomationClient / MS / Internal / Automation / MenuTracker.cs / 1 / MenuTracker.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Class used to track context menus appearing // // History: // 3/23/2004 : preid Created // //--------------------------------------------------------------------------- using System; using System.Text; using System.Windows.Automation; using System.Diagnostics; using MS.Win32; namespace MS.Internal.Automation { internal delegate void MenuHandler( AutomationElement rawEl, bool menuHasOpened ); // MenuOpened - Class used to track context menus appearing internal class MenuTracker : WinEventWrap { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors internal MenuTracker(MenuHandler newHandler) : base(new int[] {NativeMethods.EVENT_SYSTEM_MENUPOPUPSTART, NativeMethods.EVENT_SYSTEM_MENUPOPUPEND}) { AddCallback(newHandler); } #endregion Constructors //------------------------------------------------------ // // Internal Methods // //----------------------------------------------------- #region Internal Methods internal override void WinEventProc(int eventId, IntPtr hwnd, int idObject, int idChild, uint eventTime) { AutomationElement rawEl = null; bool menuHasOpened = eventId == NativeMethods.EVENT_SYSTEM_MENUPOPUPSTART; // Only create a raw element wrapper if the menu has popped up. Send a // null element for menu closed (the element isn't available anymore). // if( menuHasOpened ) { // Ignore if this is a bogus hwnd (shouldn't happen) if( hwnd == IntPtr.Zero ) return; NativeMethods.HWND nativeHwnd = NativeMethods.HWND.Cast( hwnd ); if( !SafeNativeMethods.IsWindow( nativeHwnd ) ) return; // Filter... send events for visible hwnds only if( !SafeNativeMethods.IsWindowVisible( nativeHwnd ) ) return; rawEl = AutomationElement.FromHandle( hwnd ); } // Do callback. This handler is called due to a WinEvent on the client. The handler // is going to hand off the work of calling out to the client code to another thread // via a queue so it is safe to do this callback w/in the lock. object [] handlers = GetHandlers(); Debug.Assert(handlers.Length <= 1, "handlers.Length"); if( handlers.Length > 0 ) ( ( MenuHandler )handlers[0] )( rawEl, menuHasOpened ); } #endregion Internal Methods } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Class used to track context menus appearing // // History: // 3/23/2004 : preid Created // //--------------------------------------------------------------------------- using System; using System.Text; using System.Windows.Automation; using System.Diagnostics; using MS.Win32; namespace MS.Internal.Automation { internal delegate void MenuHandler( AutomationElement rawEl, bool menuHasOpened ); // MenuOpened - Class used to track context menus appearing internal class MenuTracker : WinEventWrap { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors internal MenuTracker(MenuHandler newHandler) : base(new int[] {NativeMethods.EVENT_SYSTEM_MENUPOPUPSTART, NativeMethods.EVENT_SYSTEM_MENUPOPUPEND}) { AddCallback(newHandler); } #endregion Constructors //------------------------------------------------------ // // Internal Methods // //----------------------------------------------------- #region Internal Methods internal override void WinEventProc(int eventId, IntPtr hwnd, int idObject, int idChild, uint eventTime) { AutomationElement rawEl = null; bool menuHasOpened = eventId == NativeMethods.EVENT_SYSTEM_MENUPOPUPSTART; // Only create a raw element wrapper if the menu has popped up. Send a // null element for menu closed (the element isn't available anymore). // if( menuHasOpened ) { // Ignore if this is a bogus hwnd (shouldn't happen) if( hwnd == IntPtr.Zero ) return; NativeMethods.HWND nativeHwnd = NativeMethods.HWND.Cast( hwnd ); if( !SafeNativeMethods.IsWindow( nativeHwnd ) ) return; // Filter... send events for visible hwnds only if( !SafeNativeMethods.IsWindowVisible( nativeHwnd ) ) return; rawEl = AutomationElement.FromHandle( hwnd ); } // Do callback. This handler is called due to a WinEvent on the client. The handler // is going to hand off the work of calling out to the client code to another thread // via a queue so it is safe to do this callback w/in the lock. object [] handlers = GetHandlers(); Debug.Assert(handlers.Length <= 1, "handlers.Length"); if( handlers.Length > 0 ) ( ( MenuHandler )handlers[0] )( rawEl, menuHasOpened ); } #endregion Internal Methods } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ConfigXmlText.cs
- ContentPresenter.cs
- SubMenuStyle.cs
- ScrollItemProviderWrapper.cs
- SafeCryptoKeyHandle.cs
- BypassElement.cs
- EastAsianLunisolarCalendar.cs
- ResourceDisplayNameAttribute.cs
- AnnotationResourceChangedEventArgs.cs
- ControlEvent.cs
- PassportAuthentication.cs
- ImageAttributes.cs
- NullReferenceException.cs
- SingleConverter.cs
- TableFieldsEditor.cs
- _SslSessionsCache.cs
- ApplicationException.cs
- ADMembershipProvider.cs
- Timer.cs
- ColorTranslator.cs
- ConfigXmlReader.cs
- TextTreeInsertElementUndoUnit.cs
- Vector3DKeyFrameCollection.cs
- XsdDateTime.cs
- OdbcError.cs
- SqlNotificationRequest.cs
- ControlPropertyNameConverter.cs
- DataGridViewLinkCell.cs
- UndoEngine.cs
- ContainerFilterService.cs
- _SingleItemRequestCache.cs
- EnumDataContract.cs
- LocalIdKeyIdentifierClause.cs
- CrossSiteScriptingValidation.cs
- documentsequencetextview.cs
- InheritedPropertyDescriptor.cs
- ProtocolsConfiguration.cs
- InstanceLockTracking.cs
- ListParagraph.cs
- EntityUtil.cs
- WebPartZoneDesigner.cs
- MatrixTransform3D.cs
- ConstraintCollection.cs
- CLSCompliantAttribute.cs
- IndexExpression.cs
- ToolStripDropDownClosingEventArgs.cs
- ProxySimple.cs
- FileVersionInfo.cs
- _CacheStreams.cs
- Win32MouseDevice.cs
- BidOverLoads.cs
- GiveFeedbackEvent.cs
- ZipIOLocalFileDataDescriptor.cs
- EventPrivateKey.cs
- DirectoryInfo.cs
- DrawingAttributes.cs
- bindurihelper.cs
- DesignerTextBoxAdapter.cs
- HTTPNotFoundHandler.cs
- BypassElementCollection.cs
- TdsParameterSetter.cs
- OdbcConnection.cs
- FastEncoder.cs
- X509CertificateCollection.cs
- CodeStatement.cs
- JulianCalendar.cs
- VectorAnimationUsingKeyFrames.cs
- CodeSnippetExpression.cs
- SecurityContextSecurityTokenAuthenticator.cs
- EncryptedReference.cs
- StrokeNodeEnumerator.cs
- BitmapDecoder.cs
- ImpersonateTokenRef.cs
- ParameterCollection.cs
- TextProperties.cs
- InfoCardRSAPKCS1KeyExchangeFormatter.cs
- ResourceExpressionBuilder.cs
- TranslateTransform3D.cs
- PaginationProgressEventArgs.cs
- SqlTriggerContext.cs
- MouseActionConverter.cs
- SessionPageStateSection.cs
- Switch.cs
- FontUnitConverter.cs
- InputScopeManager.cs
- RolePrincipal.cs
- ReflectEventDescriptor.cs
- DataServiceResponse.cs
- WebPartZoneBase.cs
- OneOfTypeConst.cs
- WorkflowHostingResponseContext.cs
- DataGridAddNewRow.cs
- PermissionSetTriple.cs
- _LocalDataStore.cs
- XmlUtf8RawTextWriter.cs
- controlskin.cs
- TextAction.cs
- WriteStateInfoBase.cs
- WorkflowMarkupSerializationProvider.cs
- CustomAttributeBuilder.cs