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
- ButtonChrome.cs
- AccessedThroughPropertyAttribute.cs
- PersonalizationProviderHelper.cs
- Decoder.cs
- WebHeaderCollection.cs
- DataGridRowDetailsEventArgs.cs
- StreamProxy.cs
- LoginNameDesigner.cs
- BaseTemplateParser.cs
- ChameleonKey.cs
- HtmlContainerControl.cs
- QueryCacheKey.cs
- XamlToRtfWriter.cs
- SystemInfo.cs
- TagMapCollection.cs
- PassportPrincipal.cs
- DataBoundControlDesigner.cs
- EmptyEnumerator.cs
- FolderBrowserDialog.cs
- ReadContentAsBinaryHelper.cs
- DataGridViewTopRowAccessibleObject.cs
- PointLight.cs
- UnmanagedMemoryStreamWrapper.cs
- ExpressionNormalizer.cs
- GridToolTip.cs
- ControlPaint.cs
- AsymmetricCryptoHandle.cs
- SqlServer2KCompatibilityCheck.cs
- WebPartEditorOkVerb.cs
- InputGestureCollection.cs
- TypeDependencyAttribute.cs
- CollectionsUtil.cs
- ToolStripInSituService.cs
- MobileUserControlDesigner.cs
- NetworkStream.cs
- ObjectDataSourceEventArgs.cs
- DataGridTextBox.cs
- MetadataArtifactLoaderResource.cs
- Point3DAnimation.cs
- BooleanProjectedSlot.cs
- LinqToSqlWrapper.cs
- StructuredProperty.cs
- Bits.cs
- WaitHandleCannotBeOpenedException.cs
- Int64Storage.cs
- ContentElement.cs
- CodeGen.cs
- ListMarkerLine.cs
- _LocalDataStore.cs
- MenuTracker.cs
- GiveFeedbackEvent.cs
- SystemIcmpV6Statistics.cs
- EntityDataSourceWrapper.cs
- ConnectivityStatus.cs
- SectionInput.cs
- InputManager.cs
- TextContainer.cs
- EditorPartCollection.cs
- EntityConnection.cs
- Image.cs
- TagPrefixInfo.cs
- HttpException.cs
- MimePart.cs
- _HeaderInfoTable.cs
- ParenthesizePropertyNameAttribute.cs
- FileNotFoundException.cs
- DeflateStreamAsyncResult.cs
- DuplicateWaitObjectException.cs
- CheckBoxAutomationPeer.cs
- RangeContentEnumerator.cs
- PKCS1MaskGenerationMethod.cs
- DefaultAutoFieldGenerator.cs
- CalendarKeyboardHelper.cs
- SocketInformation.cs
- _AcceptOverlappedAsyncResult.cs
- UndoUnit.cs
- XmlJsonWriter.cs
- LOSFormatter.cs
- BaseWebProxyFinder.cs
- DesignerLoader.cs
- TableRow.cs
- SoundPlayerAction.cs
- DesignerForm.cs
- PipelineComponent.cs
- ColorDialog.cs
- StoreItemCollection.Loader.cs
- PhoneCall.cs
- GestureRecognizer.cs
- EmbeddedMailObjectsCollection.cs
- ListViewUpdateEventArgs.cs
- Exceptions.cs
- AbstractDataSvcMapFileLoader.cs
- PolicyValidationException.cs
- FormatConvertedBitmap.cs
- LinearGradientBrush.cs
- OdbcEnvironmentHandle.cs
- WindowsGraphics.cs
- SplineKeyFrames.cs
- ConnectionProviderAttribute.cs
- MexServiceChannelBuilder.cs