Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- GlobalizationAssembly.cs
- TrackBarRenderer.cs
- SelectedPathEditor.cs
- CommandHelpers.cs
- TrustManagerMoreInformation.cs
- ISFClipboardData.cs
- RectKeyFrameCollection.cs
- CharAnimationUsingKeyFrames.cs
- DateTimeOffset.cs
- BCryptNative.cs
- NavigationWindowAutomationPeer.cs
- SemaphoreFullException.cs
- QuaternionIndependentAnimationStorage.cs
- JsonUriDataContract.cs
- DataControlPagerLinkButton.cs
- ZeroOpNode.cs
- LinqDataSourceDeleteEventArgs.cs
- AlternateView.cs
- safex509handles.cs
- ComboBoxItem.cs
- DependsOnAttribute.cs
- DesignerDataParameter.cs
- fixedPageContentExtractor.cs
- SqlRecordBuffer.cs
- FloaterParaClient.cs
- GridViewUpdateEventArgs.cs
- SingleBodyParameterMessageFormatter.cs
- AlignmentYValidation.cs
- ReflectionServiceProvider.cs
- ColumnMapVisitor.cs
- ListViewCommandEventArgs.cs
- XmlRawWriter.cs
- EntityProviderServices.cs
- BinarySerializer.cs
- RenderDataDrawingContext.cs
- ParamArrayAttribute.cs
- DataGridColumnHeaderCollection.cs
- PackWebRequestFactory.cs
- Tuple.cs
- Model3DCollection.cs
- TypeConverter.cs
- EncryptedData.cs
- SoapRpcMethodAttribute.cs
- BindValidationContext.cs
- StandardToolWindows.cs
- WebPartManager.cs
- StaticSiteMapProvider.cs
- ThreadNeutralSemaphore.cs
- SetterBase.cs
- XmlExceptionHelper.cs
- ControlCachePolicy.cs
- DragDrop.cs
- HandleCollector.cs
- Matrix3DStack.cs
- AttributeEmitter.cs
- SchemaAttDef.cs
- ExceptionNotification.cs
- InvokeProviderWrapper.cs
- ComboBox.cs
- ListCollectionView.cs
- ParameterCollection.cs
- LineInfo.cs
- LinqDataSourceEditData.cs
- oledbmetadatacolumnnames.cs
- NotImplementedException.cs
- EventEntry.cs
- ExpressionList.cs
- SqlTypeConverter.cs
- WindowsIPAddress.cs
- Brushes.cs
- SByteStorage.cs
- DataControlLinkButton.cs
- TemplateControlParser.cs
- OdbcRowUpdatingEvent.cs
- IPHostEntry.cs
- GridPattern.cs
- PerspectiveCamera.cs
- AstTree.cs
- UmAlQuraCalendar.cs
- SimpleHandlerBuildProvider.cs
- SymmetricCryptoHandle.cs
- DataSourceNameHandler.cs
- LinkArea.cs
- SystemInfo.cs
- PropertyEmitter.cs
- ToolStripSettings.cs
- DesignerView.xaml.cs
- XmlProcessingInstruction.cs
- DocumentReferenceCollection.cs
- EventListener.cs
- RouteCollection.cs
- MethodAccessException.cs
- RawStylusInput.cs
- MouseActionConverter.cs
- ReflectionUtil.cs
- Timer.cs
- GeneralTransform3DTo2D.cs
- Crc32.cs
- Rotation3DAnimation.cs
- RowsCopiedEventArgs.cs