Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / AccessibleTech / longhorn / Automation / 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 : [....] 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
- GeneratedView.cs
- ValuePattern.cs
- RedirectionProxy.cs
- WebServiceTypeData.cs
- PermissionSetTriple.cs
- ImageKeyConverter.cs
- ImageBrush.cs
- NativeMethods.cs
- SQLSingleStorage.cs
- SimpleWebHandlerParser.cs
- WindowsImpersonationContext.cs
- BooleanExpr.cs
- MsmqHostedTransportManager.cs
- ItemChangedEventArgs.cs
- ContentPlaceHolder.cs
- ToolStripItemGlyph.cs
- SamlDelegatingWriter.cs
- base64Transforms.cs
- ServiceInstallComponent.cs
- UnsafeNativeMethods.cs
- RangeValueProviderWrapper.cs
- COAUTHIDENTITY.cs
- Base64Stream.cs
- Int32RectValueSerializer.cs
- AddInAttribute.cs
- WizardSideBarListControlItemEventArgs.cs
- TypeListConverter.cs
- Properties.cs
- Helper.cs
- OleDbErrorCollection.cs
- TaskbarItemInfo.cs
- PropertyInformationCollection.cs
- HttpFileCollection.cs
- CodeEventReferenceExpression.cs
- BaseConfigurationRecord.cs
- HGlobalSafeHandle.cs
- AnnouncementInnerClientCD1.cs
- CollectionsUtil.cs
- RequestDescription.cs
- FlowchartDesignerCommands.cs
- Container.cs
- TypeSystem.cs
- StylusSystemGestureEventArgs.cs
- DataGridViewTopRowAccessibleObject.cs
- SafeRightsManagementSessionHandle.cs
- Trace.cs
- StringSource.cs
- ListView.cs
- SerializationHelper.cs
- LOSFormatter.cs
- httpapplicationstate.cs
- SecurityCookieModeValidator.cs
- TextServicesDisplayAttribute.cs
- ToolStripDropDownItem.cs
- SmtpNetworkElement.cs
- CodeIndexerExpression.cs
- CustomError.cs
- QueueProcessor.cs
- QilInvoke.cs
- Stream.cs
- MatrixTransform.cs
- ImageKeyConverter.cs
- DataServiceRequestOfT.cs
- XmlComplianceUtil.cs
- DBDataPermissionAttribute.cs
- EventlogProvider.cs
- MimeFormReflector.cs
- ISO2022Encoding.cs
- WorkflowInlining.cs
- SkinBuilder.cs
- ValueTypeIndexerReference.cs
- EntityContainerRelationshipSet.cs
- PolyLineSegment.cs
- HiddenFieldPageStatePersister.cs
- DataServiceRequestException.cs
- DataServiceProviderMethods.cs
- FixedElement.cs
- ProcessRequestArgs.cs
- DataContractJsonSerializerOperationBehavior.cs
- View.cs
- ServiceChannelManager.cs
- ByteConverter.cs
- XMLSyntaxException.cs
- CustomActivityDesigner.cs
- OpCopier.cs
- Vector3dCollection.cs
- ByteAnimationBase.cs
- XmlAttributeCache.cs
- XmlBoundElement.cs
- TableLayoutColumnStyleCollection.cs
- ScriptingJsonSerializationSection.cs
- EntityDataSourceContextCreatedEventArgs.cs
- CodeSubDirectory.cs
- SecurityPolicySection.cs
- wgx_commands.cs
- HttpCachePolicyBase.cs
- DbSourceParameterCollection.cs
- RoutingConfiguration.cs
- Vector3DAnimation.cs
- Brush.cs