Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- CharacterShapingProperties.cs
- PagesSection.cs
- ConnectionStringSettingsCollection.cs
- securestring.cs
- ResourceDescriptionAttribute.cs
- XamlToRtfWriter.cs
- CollectionViewGroup.cs
- XmlSchemaAnnotated.cs
- OutputCacheSection.cs
- Point3DAnimationUsingKeyFrames.cs
- ImageConverter.cs
- X509UI.cs
- InfoCardSymmetricCrypto.cs
- DataGridViewSelectedRowCollection.cs
- ProtocolsConfigurationHandler.cs
- PolicyChain.cs
- HtmlControlPersistable.cs
- RangeValidator.cs
- ListControl.cs
- ADConnectionHelper.cs
- DataRow.cs
- Component.cs
- XmlSerializerVersionAttribute.cs
- ZipIOExtraFieldPaddingElement.cs
- log.cs
- ListSortDescriptionCollection.cs
- LogEntryHeaderDeserializer.cs
- ProfileGroupSettings.cs
- PassportPrincipal.cs
- SoapInteropTypes.cs
- EndpointPerformanceCounters.cs
- X509Extension.cs
- GridProviderWrapper.cs
- IntSumAggregationOperator.cs
- GridViewRowCollection.cs
- TextTreeExtractElementUndoUnit.cs
- RegistryPermission.cs
- PageParser.cs
- DateRangeEvent.cs
- MenuItemStyle.cs
- ItemChangedEventArgs.cs
- WebPartCloseVerb.cs
- log.cs
- CodeAccessPermission.cs
- EpmContentSerializerBase.cs
- FormsAuthenticationCredentials.cs
- DataGridViewColumnConverter.cs
- Preprocessor.cs
- Utils.cs
- FileIOPermission.cs
- MetafileHeaderWmf.cs
- SafeHandle.cs
- ListItemViewControl.cs
- ObjectQueryState.cs
- SessionStateContainer.cs
- ConfigXmlWhitespace.cs
- PropertyOverridesTypeEditor.cs
- CapabilitiesState.cs
- HierarchicalDataSourceControl.cs
- CommandField.cs
- CustomErrorsSectionWrapper.cs
- GenericWebPart.cs
- Vector.cs
- unitconverter.cs
- EdmComplexTypeAttribute.cs
- CompositeActivityCodeGenerator.cs
- BindToObject.cs
- ResourceCategoryAttribute.cs
- HttpResponseInternalWrapper.cs
- NavigationWindowAutomationPeer.cs
- ScrollPatternIdentifiers.cs
- securitycriticaldata.cs
- AndMessageFilter.cs
- WebPartTracker.cs
- OrderByExpression.cs
- ExpressionsCollectionConverter.cs
- ChangePassword.cs
- MarkupCompilePass2.cs
- AspNetSynchronizationContext.cs
- RegionData.cs
- XPathMultyIterator.cs
- NamedPipeAppDomainProtocolHandler.cs
- IgnorePropertiesAttribute.cs
- EnumerableRowCollectionExtensions.cs
- NetworkInterface.cs
- MergeExecutor.cs
- AtomServiceDocumentSerializer.cs
- ColorTranslator.cs
- Table.cs
- KnownTypesHelper.cs
- ColumnBinding.cs
- StandardOleMarshalObject.cs
- srgsitem.cs
- ConcurrentDictionary.cs
- XmlCodeExporter.cs
- DynamicPropertyHolder.cs
- DataServiceResponse.cs
- Logging.cs
- InheritedPropertyChangedEventArgs.cs
- WorkflowOwnershipException.cs