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
- MetadataSource.cs
- DispatchWrapper.cs
- BuildProviderCollection.cs
- StructuredType.cs
- ReadWriteSpinLock.cs
- ImagingCache.cs
- NavigationExpr.cs
- ProxySimple.cs
- ConfigXmlWhitespace.cs
- COM2PictureConverter.cs
- DbRetry.cs
- SizeAnimation.cs
- GridViewSelectEventArgs.cs
- GridViewUpdatedEventArgs.cs
- PageHandlerFactory.cs
- AppSettingsSection.cs
- SqlPersistenceProviderFactory.cs
- HandledEventArgs.cs
- CustomTypeDescriptor.cs
- WebExceptionStatus.cs
- HttpCacheVaryByContentEncodings.cs
- ConfigurationException.cs
- HttpCapabilitiesBase.cs
- Constraint.cs
- StylusLogic.cs
- SByte.cs
- PathFigureCollection.cs
- StaticDataManager.cs
- TargetFrameworkUtil.cs
- WebEventTraceProvider.cs
- HttpSysSettings.cs
- NavigationProperty.cs
- TargetInvocationException.cs
- TraceFilter.cs
- odbcmetadatacolumnnames.cs
- COM2ExtendedBrowsingHandler.cs
- PrePrepareMethodAttribute.cs
- DbConnectionClosed.cs
- AudienceUriMode.cs
- RegexRunnerFactory.cs
- SqlTransaction.cs
- FilteredXmlReader.cs
- ReceiveMessageContent.cs
- QuadTree.cs
- URI.cs
- TextWriterTraceListener.cs
- Decorator.cs
- ValueType.cs
- Facet.cs
- SafeLibraryHandle.cs
- FeatureManager.cs
- RsaSecurityKey.cs
- SqlCrossApplyToCrossJoin.cs
- MsmqIntegrationChannelFactory.cs
- UrlPath.cs
- OracleConnectionFactory.cs
- CodeRemoveEventStatement.cs
- StateMachineSubscriptionManager.cs
- DataServiceConfiguration.cs
- HttpServerVarsCollection.cs
- counter.cs
- Point3DValueSerializer.cs
- DeadCharTextComposition.cs
- XhtmlBasicObjectListAdapter.cs
- Debugger.cs
- XmlParserContext.cs
- _DomainName.cs
- CompilerState.cs
- XmlRawWriter.cs
- TransferMode.cs
- ConditionalBranch.cs
- CustomAttributeBuilder.cs
- CodeMemberField.cs
- ContentPosition.cs
- CommandHelper.cs
- InternalCache.cs
- FlagPanel.cs
- OdbcErrorCollection.cs
- CookielessData.cs
- CharUnicodeInfo.cs
- VisualBasicHelper.cs
- XmlException.cs
- SaveFileDialog.cs
- EdmEntityTypeAttribute.cs
- ISAPIApplicationHost.cs
- DataMemberConverter.cs
- RectConverter.cs
- Activation.cs
- XmlDataDocument.cs
- PropertyPath.cs
- FontFamilyConverter.cs
- PartialCachingAttribute.cs
- GeneralTransform2DTo3DTo2D.cs
- XmlTextReader.cs
- HttpWebRequestElement.cs
- UnicastIPAddressInformationCollection.cs
- ProtocolsConfiguration.cs
- TableRow.cs
- MediaCommands.cs
- HMAC.cs