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
- SchemaObjectWriter.cs
- MultipartContentParser.cs
- Message.cs
- DiscriminatorMap.cs
- DescendantOverDescendantQuery.cs
- OptimalTextSource.cs
- HwndHostAutomationPeer.cs
- XmlSchemaInclude.cs
- SecurityValidationBehavior.cs
- ListBox.cs
- StructuredCompositeActivityDesigner.cs
- ObjectPropertyMapping.cs
- NavigationProperty.cs
- ImageFormatConverter.cs
- ConfigXmlElement.cs
- XmlExceptionHelper.cs
- PasswordRecovery.cs
- JoinTreeSlot.cs
- PropertyItem.cs
- PasswordBoxAutomationPeer.cs
- DbDataAdapter.cs
- SelectionListDesigner.cs
- Axis.cs
- TextEditorSelection.cs
- WebPartConnectionsCloseVerb.cs
- EmptyStringExpandableObjectConverter.cs
- XmlIncludeAttribute.cs
- TransformerInfo.cs
- NameValueConfigurationElement.cs
- SendDesigner.xaml.cs
- ListItemsCollectionEditor.cs
- LinearKeyFrames.cs
- DbProviderFactories.cs
- EditorZoneAutoFormat.cs
- FixedPageProcessor.cs
- _BufferOffsetSize.cs
- XmlSchemaValidator.cs
- ConnectionString.cs
- MediaContext.cs
- PolicyValidationException.cs
- AuthStoreRoleProvider.cs
- WebPartMovingEventArgs.cs
- NaturalLanguageHyphenator.cs
- TabItemAutomationPeer.cs
- Transform3D.cs
- SerializationAttributes.cs
- FilteredDataSetHelper.cs
- ADMembershipUser.cs
- NeutralResourcesLanguageAttribute.cs
- DbProviderSpecificTypePropertyAttribute.cs
- IxmlLineInfo.cs
- ColorConverter.cs
- GeneralTransform2DTo3D.cs
- FilteredAttributeCollection.cs
- XPathNavigatorKeyComparer.cs
- XmlSchemaImporter.cs
- QueryOptionExpression.cs
- FocusChangedEventArgs.cs
- DefaultAssemblyResolver.cs
- ApplicationSecurityInfo.cs
- BrowserCapabilitiesCodeGenerator.cs
- TreeNodeBindingCollection.cs
- Application.cs
- SchemaImporter.cs
- ActiveXSite.cs
- KeyboardNavigation.cs
- EasingKeyFrames.cs
- SchemaNotation.cs
- DesignerVerb.cs
- WebPartCloseVerb.cs
- Model3DGroup.cs
- FlowchartStart.xaml.cs
- FeatureSupport.cs
- ErrorWrapper.cs
- WebPartActionVerb.cs
- WebOperationContext.cs
- TransformerInfoCollection.cs
- MultiSelector.cs
- LateBoundChannelParameterCollection.cs
- FileDialog_Vista_Interop.cs
- CommentAction.cs
- CodeNamespace.cs
- Permission.cs
- CacheVirtualItemsEvent.cs
- DoubleAnimationUsingPath.cs
- Normalization.cs
- ClientSideProviderDescription.cs
- SafeFileMappingHandle.cs
- MimeTypePropertyAttribute.cs
- InputProviderSite.cs
- XmlDataLoader.cs
- _emptywebproxy.cs
- Collection.cs
- Vector3D.cs
- InheritablePropertyChangeInfo.cs
- TraceContextRecord.cs
- DiagnosticTrace.cs
- CheckBox.cs
- DataGridViewBand.cs
- NamespaceQuery.cs