Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- PointConverter.cs
- DataPagerFieldCommandEventArgs.cs
- SoapHeaderException.cs
- SqlBulkCopyColumnMappingCollection.cs
- TabControl.cs
- CodeCommentStatement.cs
- CheckBoxPopupAdapter.cs
- XmlWrappingWriter.cs
- EmptyCollection.cs
- ClonableStack.cs
- HttpListenerPrefixCollection.cs
- MaterializeFromAtom.cs
- LicenseProviderAttribute.cs
- RTLAwareMessageBox.cs
- SqlCacheDependencyDatabaseCollection.cs
- DocobjHost.cs
- _Rfc2616CacheValidators.cs
- QueryLifecycle.cs
- Operand.cs
- DynamicValueConverter.cs
- FixedTextContainer.cs
- ResXBuildProvider.cs
- Pair.cs
- StateInitializationDesigner.cs
- ClientUIRequest.cs
- StoryFragments.cs
- MetafileHeader.cs
- DefinitionUpdate.cs
- TextElement.cs
- MD5HashHelper.cs
- EncodingStreamWrapper.cs
- selecteditemcollection.cs
- ErrorProvider.cs
- MetadataItemSerializer.cs
- _NegotiateClient.cs
- WebPartDeleteVerb.cs
- MessageContractMemberAttribute.cs
- XmlBinaryWriterSession.cs
- RawStylusInputCustomData.cs
- BindingMAnagerBase.cs
- Matrix3D.cs
- ZoomingMessageFilter.cs
- DivideByZeroException.cs
- StandardToolWindows.cs
- ObjectList.cs
- _ListenerResponseStream.cs
- Point4D.cs
- LoadedOrUnloadedOperation.cs
- SqlDataSourceQueryConverter.cs
- LingerOption.cs
- EventSchemaTraceListener.cs
- WebPartConnectionsDisconnectVerb.cs
- RowType.cs
- sqlstateclientmanager.cs
- ArcSegment.cs
- WSHttpBindingCollectionElement.cs
- COM2TypeInfoProcessor.cs
- HtmlFormWrapper.cs
- CapiNative.cs
- DependencyObjectCodeDomSerializer.cs
- CodeDelegateInvokeExpression.cs
- ContractMapping.cs
- ApplicationHost.cs
- QilInvokeEarlyBound.cs
- DataGridViewTopRowAccessibleObject.cs
- SHA512.cs
- ClientConfigurationHost.cs
- Path.cs
- documentsequencetextpointer.cs
- SortDescription.cs
- TextDecoration.cs
- AnnotationAuthorChangedEventArgs.cs
- ModelVisual3D.cs
- CngKey.cs
- WebUtil.cs
- XmlQueryContext.cs
- CmsInterop.cs
- TextRangeEditTables.cs
- SoapUnknownHeader.cs
- InitializeCorrelation.cs
- DataGridHelper.cs
- Timeline.cs
- PopupRoot.cs
- QueueProcessor.cs
- MaskInputRejectedEventArgs.cs
- XmlNavigatorStack.cs
- ParserOptions.cs
- BevelBitmapEffect.cs
- TypePropertyEditor.cs
- ExternalCalls.cs
- ValidationErrorInfo.cs
- XmlSchemaProviderAttribute.cs
- CodeDomComponentSerializationService.cs
- ConcurrentBag.cs
- GetWinFXPath.cs
- ipaddressinformationcollection.cs
- TabletCollection.cs
- EventProvider.cs
- ImageIndexConverter.cs
- FileLevelControlBuilderAttribute.cs