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
- CustomAttributeFormatException.cs
- TableAdapterManagerGenerator.cs
- AuthenticateEventArgs.cs
- ListViewInsertionMark.cs
- MembershipUser.cs
- SafeTokenHandle.cs
- ProfileModule.cs
- Internal.cs
- Base64Encoding.cs
- UnknownBitmapDecoder.cs
- QilTypeChecker.cs
- Walker.cs
- ChannelDispatcherCollection.cs
- TextParagraphView.cs
- EpmContentSerializer.cs
- typedescriptorpermissionattribute.cs
- WindowsIdentity.cs
- DoubleCollection.cs
- HexParser.cs
- AttachmentService.cs
- LambdaCompiler.Lambda.cs
- ResXDataNode.cs
- SecurityRuntime.cs
- XmlSerializableServices.cs
- RotateTransform.cs
- PaintValueEventArgs.cs
- DelegatingTypeDescriptionProvider.cs
- CodeSnippetStatement.cs
- GlobalProxySelection.cs
- HGlobalSafeHandle.cs
- ReferenceService.cs
- TextEffect.cs
- DirtyTextRange.cs
- PagesSection.cs
- ToolTipAutomationPeer.cs
- XomlSerializationHelpers.cs
- XslTransform.cs
- TextElement.cs
- Constraint.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- EntryIndex.cs
- HttpPostProtocolReflector.cs
- ScriptManager.cs
- CallbackHandler.cs
- StructuredProperty.cs
- MiniModule.cs
- _CacheStreams.cs
- LabelLiteral.cs
- RoleBoolean.cs
- BufferedMessageWriter.cs
- ToolBarButtonClickEvent.cs
- UnionExpr.cs
- safex509handles.cs
- FontEditor.cs
- AnnotationStore.cs
- WebCodeGenerator.cs
- Stroke.cs
- HybridDictionary.cs
- ErrorsHelper.cs
- IndexExpression.cs
- SemaphoreSecurity.cs
- ContextProperty.cs
- DataChangedEventManager.cs
- TimelineCollection.cs
- EncodingInfo.cs
- DesignerActionPanel.cs
- InvalidDataContractException.cs
- Clause.cs
- CompositionTarget.cs
- DynamicActionMessageFilter.cs
- XmlCharacterData.cs
- MediaPlayer.cs
- ObjectDataSourceMethodEventArgs.cs
- IssuanceLicense.cs
- ResourceContainer.cs
- cookiecontainer.cs
- MethodInfo.cs
- Stylus.cs
- CompositeTypefaceMetrics.cs
- MobileContainerDesigner.cs
- AppSettingsExpressionBuilder.cs
- VisemeEventArgs.cs
- TypeInitializationException.cs
- LicFileLicenseProvider.cs
- SqlUdtInfo.cs
- DataGridViewSelectedCellCollection.cs
- OneOfTypeConst.cs
- SeverityFilter.cs
- BitmapMetadataBlob.cs
- ToolboxBitmapAttribute.cs
- FunctionDetailsReader.cs
- FunctionDescription.cs
- TransactionFlowBindingElement.cs
- WebPartZoneCollection.cs
- DefaultEvaluationContext.cs
- DataViewListener.cs
- CodeDirectoryCompiler.cs
- NoResizeHandleGlyph.cs
- TraceListener.cs
- ConstraintManager.cs