Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- Trace.cs
- XmlBinaryWriter.cs
- TypeConstant.cs
- _Rfc2616CacheValidators.cs
- XmlUTF8TextReader.cs
- OutputScope.cs
- PreviewKeyDownEventArgs.cs
- Site.cs
- QueryResponse.cs
- ClientSession.cs
- ListViewInsertedEventArgs.cs
- Merger.cs
- ConnectorSelectionGlyph.cs
- MdiWindowListItemConverter.cs
- Peer.cs
- MimePart.cs
- XXXOnTypeBuilderInstantiation.cs
- VectorConverter.cs
- x509store.cs
- DateTimeConverter.cs
- EnterpriseServicesHelper.cs
- EventLogPermissionAttribute.cs
- SeekableReadStream.cs
- EntityCommand.cs
- Int32.cs
- ToolStripItemImageRenderEventArgs.cs
- CodeMemberField.cs
- BooleanProjectedSlot.cs
- HtmlInputReset.cs
- ParameterCollection.cs
- XmlSchemaInclude.cs
- AnimatedTypeHelpers.cs
- Identifier.cs
- WasHttpHandlersInstallComponent.cs
- WebBrowserSiteBase.cs
- XmlElementList.cs
- StrongNameKeyPair.cs
- NetDataContractSerializer.cs
- ToolStripManager.cs
- MarkupObject.cs
- UIPermission.cs
- DataContractJsonSerializer.cs
- BufferModesCollection.cs
- SortedDictionary.cs
- RelationshipEnd.cs
- ConfigurationValidatorBase.cs
- AvTrace.cs
- Conditional.cs
- WebConvert.cs
- AudioFileOut.cs
- UnsafeNativeMethods.cs
- CodeTypeParameterCollection.cs
- TablePattern.cs
- SynchronizedDispatch.cs
- DataSourceIDConverter.cs
- ObjectDataSourceDisposingEventArgs.cs
- CatalogZoneDesigner.cs
- InkCollectionBehavior.cs
- odbcmetadatacolumnnames.cs
- LayoutDump.cs
- AccessDataSourceView.cs
- DataGridViewBindingCompleteEventArgs.cs
- ConfigXmlCDataSection.cs
- TypeGeneratedEventArgs.cs
- ErrorHandlingAcceptor.cs
- BinaryEditor.cs
- ArrayList.cs
- ClientCredentialsElement.cs
- EditingCoordinator.cs
- RuleProcessor.cs
- HitTestDrawingContextWalker.cs
- HotSpot.cs
- ByteFacetDescriptionElement.cs
- PackWebRequest.cs
- HttpStreamXmlDictionaryReader.cs
- ContextProperty.cs
- IDQuery.cs
- XmlObjectSerializerReadContextComplex.cs
- SqlUdtInfo.cs
- TimerEventSubscriptionCollection.cs
- OutputCacheModule.cs
- CommandManager.cs
- BindingManagerDataErrorEventArgs.cs
- xmlglyphRunInfo.cs
- XD.cs
- GroupBoxAutomationPeer.cs
- TableCell.cs
- sqlstateclientmanager.cs
- DataObject.cs
- EntityClassGenerator.cs
- _RequestCacheProtocol.cs
- PersianCalendar.cs
- TrackingProfile.cs
- SqlSupersetValidator.cs
- FormsAuthenticationModule.cs
- DbgCompiler.cs
- TextTreeTextElementNode.cs
- EntityDataSourceChangedEventArgs.cs
- ellipse.cs
- AssociationType.cs