Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / UIAutomation / UIAutomationClient / MS / Internal / Automation / MenuTracker.cs / 1305600 / 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
- StylusPointProperty.cs
- UnknownExceptionActionHelper.cs
- LayoutEditorPart.cs
- PersonalizationStateQuery.cs
- ParenthesizePropertyNameAttribute.cs
- CipherData.cs
- FileResponseElement.cs
- ReflectionServiceProvider.cs
- ObjectListSelectEventArgs.cs
- NumericUpDown.cs
- SoapIncludeAttribute.cs
- GeneralTransform.cs
- JsonWriterDelegator.cs
- ManagementInstaller.cs
- LogicalMethodInfo.cs
- StoreItemCollection.Loader.cs
- GACIdentityPermission.cs
- PathNode.cs
- ToolStripItemCollection.cs
- EventListener.cs
- LayoutSettings.cs
- XmlSchemaParticle.cs
- SqlProvider.cs
- GradientStop.cs
- SecurityMode.cs
- ExpandSegment.cs
- CollectionCodeDomSerializer.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- DbReferenceCollection.cs
- LassoSelectionBehavior.cs
- RoleGroup.cs
- MemberHolder.cs
- NullRuntimeConfig.cs
- BuildManager.cs
- ScheduleChanges.cs
- RelationalExpressions.cs
- TransformerTypeCollection.cs
- EntityTypeEmitter.cs
- Message.cs
- HttpHandlersSection.cs
- PickBranch.cs
- ProtocolsSection.cs
- TagMapInfo.cs
- CharacterHit.cs
- ToolboxComponentsCreatedEventArgs.cs
- SoapTypeAttribute.cs
- TableSectionStyle.cs
- ConnectionStringsExpressionEditor.cs
- RuntimeWrappedException.cs
- ListBoxItem.cs
- CustomSignedXml.cs
- ClosableStream.cs
- Cloud.cs
- ProviderMetadataCachedInformation.cs
- DataServiceQueryException.cs
- CodeParameterDeclarationExpressionCollection.cs
- XmlStreamStore.cs
- NativeMethodsOther.cs
- RegexNode.cs
- DeviceContext2.cs
- DateTimeUtil.cs
- ActivityExecutorDelegateInfo.cs
- TableLayoutColumnStyleCollection.cs
- SiteMapDataSourceView.cs
- IBuiltInEvidence.cs
- RC2.cs
- DataGridCaption.cs
- formatter.cs
- SafePipeHandle.cs
- BufferedWebEventProvider.cs
- GridViewSelectEventArgs.cs
- RoutedEventHandlerInfo.cs
- StructuredType.cs
- PriorityItem.cs
- SplineKeyFrames.cs
- TextCollapsingProperties.cs
- ListViewInsertEventArgs.cs
- XmlAttributes.cs
- XmlNodeWriter.cs
- KeyTime.cs
- GlyphRunDrawing.cs
- PersonalizationProvider.cs
- XdrBuilder.cs
- WeakEventTable.cs
- Handle.cs
- WasAdminWrapper.cs
- HostingEnvironmentException.cs
- SimpleNameService.cs
- SqlGenerator.cs
- DataServiceEntityAttribute.cs
- TdsParserSessionPool.cs
- TargetControlTypeAttribute.cs
- storepermissionattribute.cs
- XmlChildNodes.cs
- DragEventArgs.cs
- StrongNameHelpers.cs
- PeerResolverMode.cs
- HiddenFieldPageStatePersister.cs
- PolyBezierSegment.cs
- WindowShowOrOpenTracker.cs